sycommon-python-lib 0.2.1a34__tar.gz → 0.2.1a36__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/PKG-INFO +1 -1
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/pyproject.toml +1 -1
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/agent/sandbox/http_sandbox_backend.py +69 -3
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon_python_lib.egg-info/PKG-INFO +1 -1
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/README.md +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/setup.cfg +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/command/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/command/cli.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/command/core/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/command/core/console.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/command/core/models.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/command/core/project.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/command/core/utils.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/command/templates/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/command/templates/agent/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/command/templates/base/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/command/templates/web/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/agent/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/agent/agent_manager.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/agent/chat_events.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/agent/deep_agent.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/agent/multi_agent_team.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/agent/sandbox/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/agent/sandbox/file_ops.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/agent/sandbox/sandbox_pool.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/agent/sandbox/sandbox_recovery.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/agent/sandbox/session.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/auth/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/auth/ldap_service.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/config/Config.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/config/DatabaseConfig.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/config/ElasticsearchConfig.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/config/EmbeddingConfig.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/config/LLMConfig.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/config/LangfuseConfig.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/config/MQConfig.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/config/RedisConfig.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/config/RerankerConfig.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/config/SentryConfig.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/config/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/database/async_base_db_service.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/database/async_database_service.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/database/base_db_service.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/database/database_service.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/database/elasticsearch_service.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/database/redis_service.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/database/token_usage_db_service.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/health/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/health/health_check.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/health/metrics.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/health/ping.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/heartbeat_process/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/heartbeat_process/heartbeat_config.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/heartbeat_process/heartbeat_process_manager.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/heartbeat_process/heartbeat_process_worker.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/llm/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/llm/embedding.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/llm/get_llm.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/llm/llm_logger.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/llm/llm_tokens.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/llm/llm_with_token_tracking.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/llm/native_with_fallback_runnable.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/llm/output_fixing_runnable.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/llm/struct_token.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/llm/sy_langfuse.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/llm/token_usage_es_service.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/llm/token_usage_mysql_service.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/llm/usage_token.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/logging/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/logging/async_sql_logger.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/logging/kafka_log.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/logging/logger_levels.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/logging/logger_wrapper.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/logging/process_logger.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/logging/sql_logger.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/background_execution.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/context.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/cors.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/docs.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/exception.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/middleware.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/monitor_memory.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/mq.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/sandbox.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/timeout.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/traceid.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/models/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/models/base_http.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/models/log.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/models/mqlistener_config.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/models/mqmsg_model.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/models/mqsend_config.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/models/sandbox.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/models/sso_user.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/models/token_usage.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/models/token_usage_mysql.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/notice/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/notice/uvicorn_monitor.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/rabbitmq/process_pool_consumer.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/rabbitmq/rabbitmq_client.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/rabbitmq/rabbitmq_pool.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/rabbitmq/rabbitmq_service.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/rabbitmq/rabbitmq_service_client_manager.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/rabbitmq/rabbitmq_service_connection_monitor.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/rabbitmq/rabbitmq_service_consumer_manager.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/rabbitmq/rabbitmq_service_core.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/rabbitmq/rabbitmq_service_producer_manager.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/sentry/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/sentry/sy_sentry.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/services.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/sse/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/sse/event.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/sse/sse.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/synacos/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/synacos/example.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/synacos/example2.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/synacos/feign.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/synacos/feign_client.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/synacos/nacos_client_base.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/synacos/nacos_config_manager.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/synacos/nacos_heartbeat_manager.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/synacos/nacos_service.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/synacos/nacos_service_discovery.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/synacos/nacos_service_registration.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/synacos/param.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/tests/deep_agent_server.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/tests/test_deep_agent.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/tests/test_email.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/tests/test_mq.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/tools/__init__.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/tools/async_utils.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/tools/docs.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/tools/env.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/tools/merge_headers.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/tools/snowflake.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/tools/syemail.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/tools/timing.py +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon_python_lib.egg-info/SOURCES.txt +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon_python_lib.egg-info/dependency_links.txt +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon_python_lib.egg-info/entry_points.txt +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon_python_lib.egg-info/requires.txt +0 -0
- {sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon_python_lib.egg-info/top_level.txt +0 -0
|
@@ -117,18 +117,20 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
|
|
|
117
117
|
timeout: int = 120,
|
|
118
118
|
sync_dirs: List[tuple[str, str]] = None,
|
|
119
119
|
auto_sync: bool = False,
|
|
120
|
+
load_balance: bool = True,
|
|
120
121
|
) -> "HTTPSandboxBackend":
|
|
121
122
|
"""
|
|
122
123
|
从 Nacos 服务发现创建后端实例
|
|
123
124
|
|
|
124
125
|
Args:
|
|
125
126
|
service_name: Nacos 服务名
|
|
126
|
-
user_id: 用户ID
|
|
127
|
+
user_id: 用户ID,用于隔离工作目录和负载均衡
|
|
127
128
|
group: 服务分组
|
|
128
129
|
version: 服务版本
|
|
129
130
|
timeout: 超时时间
|
|
130
131
|
sync_dirs: 要同步的目录列表 [(本地路径, 沙箱路径), ...]
|
|
131
132
|
auto_sync: 是否在首次文件操作时自动同步
|
|
133
|
+
load_balance: 是否基于 user_id 进行负载均衡(默认 True)
|
|
132
134
|
|
|
133
135
|
Returns:
|
|
134
136
|
HTTPSandboxBackend 实例
|
|
@@ -138,6 +140,7 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
|
|
|
138
140
|
"""
|
|
139
141
|
SYLogger.info(f"[Sandbox] from_nacos 开始: service_name={service_name}, user_id={user_id}")
|
|
140
142
|
from sycommon.synacos.nacos_service import NacosService
|
|
143
|
+
import hashlib
|
|
141
144
|
|
|
142
145
|
# 获取单例实例
|
|
143
146
|
nacos_manager = NacosService(None)
|
|
@@ -156,8 +159,17 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
|
|
|
156
159
|
if not instances:
|
|
157
160
|
raise RuntimeError(f"服务 [{service_name}] 无可用实例")
|
|
158
161
|
|
|
159
|
-
#
|
|
160
|
-
|
|
162
|
+
# 基于用户ID的负载均衡:使用哈希选择实例
|
|
163
|
+
if load_balance and len(instances) > 1:
|
|
164
|
+
# 使用 user_id 的哈希值来选择实例,确保同一用户始终路由到同一实例
|
|
165
|
+
hash_value = int(hashlib.md5(user_id.encode()).hexdigest(), 16)
|
|
166
|
+
instance_index = hash_value % len(instances)
|
|
167
|
+
instance = instances[instance_index]
|
|
168
|
+
SYLogger.info(f"[Sandbox] 负载均衡: user_id={user_id} -> instance[{instance_index}/{len(instances)}]")
|
|
169
|
+
else:
|
|
170
|
+
# 使用第一个实例
|
|
171
|
+
instance = instances[0]
|
|
172
|
+
|
|
161
173
|
base_url = f"http://{instance['ip']}:{instance['port']}"
|
|
162
174
|
|
|
163
175
|
SYLogger.info(f"[Sandbox] Nacos 发现沙箱服务: {service_name} -> {base_url}")
|
|
@@ -546,6 +558,60 @@ class HTTPSandboxBackend(FileOperationsMixin, SandboxBackendProtocol):
|
|
|
546
558
|
"""异步手动同步所有配置的目录到沙箱"""
|
|
547
559
|
return await asyncio.to_thread(self.sync)
|
|
548
560
|
|
|
561
|
+
def sync_dirs(self, dirs: List[tuple[str, str]]) -> dict:
|
|
562
|
+
"""同步指定的目录列表到沙箱
|
|
563
|
+
|
|
564
|
+
Args:
|
|
565
|
+
dirs: 要同步的目录列表 [(本地路径, 沙箱路径), ...]
|
|
566
|
+
|
|
567
|
+
Returns:
|
|
568
|
+
dict: 每个目录的同步结果 {"local_path": {"success": x, "failed": y, "errors": [...]}}
|
|
569
|
+
"""
|
|
570
|
+
if not dirs:
|
|
571
|
+
SYLogger.info("[Sandbox] sync_dirs: 没有指定同步目录")
|
|
572
|
+
return {}
|
|
573
|
+
|
|
574
|
+
SYLogger.info(f"[Sandbox] sync_dirs 开始, 共 {len(dirs)} 个目录")
|
|
575
|
+
results = {}
|
|
576
|
+
for idx, (local_path, remote_path) in enumerate(dirs):
|
|
577
|
+
SYLogger.info(f"[Sandbox] 同步目录 [{idx+1}/{len(dirs)}]: {local_path} -> {remote_path}")
|
|
578
|
+
local_dir = Path(local_path)
|
|
579
|
+
|
|
580
|
+
if not local_dir.exists():
|
|
581
|
+
SYLogger.warning(f"[Sandbox] 本地目录不存在: {local_path}")
|
|
582
|
+
results[local_path] = {"success": 0, "failed": 0, "errors": [{"error": "目录不存在"}]}
|
|
583
|
+
continue
|
|
584
|
+
|
|
585
|
+
if local_dir.is_dir():
|
|
586
|
+
SYLogger.info(f"[Sandbox] 开始上传目录: {local_path}")
|
|
587
|
+
result = self._upload_directory_sync(str(local_dir), remote_path)
|
|
588
|
+
results[local_path] = result
|
|
589
|
+
SYLogger.info(f"[Sandbox] 目录上传完成: {local_path}, 成功={result['success']}, 失败={result['failed']}")
|
|
590
|
+
else:
|
|
591
|
+
# 单文件
|
|
592
|
+
SYLogger.info(f"[Sandbox] 上传单文件: {local_path}")
|
|
593
|
+
with open(local_dir, "rb") as f:
|
|
594
|
+
content = f.read()
|
|
595
|
+
upload_results = self.upload_files([(remote_path, content)])
|
|
596
|
+
if upload_results[0].error:
|
|
597
|
+
results[local_path] = {"success": 0, "failed": 1, "errors": [{"path": remote_path, "error": upload_results[0].error}]}
|
|
598
|
+
else:
|
|
599
|
+
results[local_path] = {"success": 1, "failed": 0, "errors": []}
|
|
600
|
+
|
|
601
|
+
SYLogger.info("[Sandbox] sync_dirs 完成")
|
|
602
|
+
return results
|
|
603
|
+
|
|
604
|
+
async def async_sync_dirs(self, dirs: List[tuple[str, str]]) -> dict:
|
|
605
|
+
"""异步同步指定的目录列表到沙箱
|
|
606
|
+
|
|
607
|
+
Args:
|
|
608
|
+
dirs: 要同步的目录列表 [(本地路径, 沙箱路径), ...]
|
|
609
|
+
|
|
610
|
+
Returns:
|
|
611
|
+
dict: 每个目录的同步结果 {"local_path": {"success": x, "failed": y, "errors": [...]}}
|
|
612
|
+
"""
|
|
613
|
+
return await asyncio.to_thread(self.sync_dirs, dirs)
|
|
614
|
+
|
|
549
615
|
def _upload_directory_sync(self, local_dir: str, remote_path: str = "/") -> dict:
|
|
550
616
|
"""上传整个目录到沙箱(同步版本)
|
|
551
617
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/command/templates/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/command/templates/base/__init__.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/command/templates/web/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/agent/__init__.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/agent/agent_manager.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/agent/chat_events.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/agent/deep_agent.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/agent/multi_agent_team.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/agent/sandbox/__init__.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/agent/sandbox/file_ops.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/agent/sandbox/session.py
RENAMED
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/auth/ldap_service.py
RENAMED
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/config/DatabaseConfig.py
RENAMED
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/config/EmbeddingConfig.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/config/LLMConfig.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/config/LangfuseConfig.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/config/MQConfig.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/config/RedisConfig.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/config/RerankerConfig.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/config/SentryConfig.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/config/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/database/redis_service.py
RENAMED
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/health/__init__.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/health/health_check.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/health/metrics.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/llm/llm_logger.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/llm/llm_tokens.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/llm/struct_token.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/llm/sy_langfuse.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/llm/usage_token.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/logging/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/logging/kafka_log.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/logging/logger_levels.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/logging/logger_wrapper.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/logging/process_logger.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/logging/sql_logger.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/context.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/cors.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/docs.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/exception.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/middleware.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/sandbox.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/timeout.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/traceid.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/models/__init__.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/models/base_http.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/models/mqmsg_model.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/models/mqsend_config.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/models/sandbox.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/models/sso_user.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/models/token_usage.py
RENAMED
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/notice/__init__.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/notice/uvicorn_monitor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/rabbitmq/rabbitmq_pool.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/sentry/__init__.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/sentry/sy_sentry.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/synacos/__init__.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/synacos/example.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/synacos/example2.py
RENAMED
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/synacos/feign_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/synacos/nacos_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/tests/test_deep_agent.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/tests/test_email.py
RENAMED
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/tools/__init__.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/tools/async_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/tools/merge_headers.py
RENAMED
|
File without changes
|
{sycommon_python_lib-0.2.1a34 → sycommon_python_lib-0.2.1a36}/src/sycommon/tools/snowflake.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|