sycommon-python-lib 0.2.1a35__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.
Files changed (144) hide show
  1. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/PKG-INFO +1 -1
  2. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/pyproject.toml +1 -1
  3. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/agent/sandbox/http_sandbox_backend.py +15 -3
  4. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon_python_lib.egg-info/PKG-INFO +1 -1
  5. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/README.md +0 -0
  6. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/setup.cfg +0 -0
  7. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/command/__init__.py +0 -0
  8. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/command/cli.py +0 -0
  9. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/command/core/__init__.py +0 -0
  10. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/command/core/console.py +0 -0
  11. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/command/core/models.py +0 -0
  12. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/command/core/project.py +0 -0
  13. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/command/core/utils.py +0 -0
  14. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/command/templates/__init__.py +0 -0
  15. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/command/templates/agent/__init__.py +0 -0
  16. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/command/templates/base/__init__.py +0 -0
  17. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/command/templates/web/__init__.py +0 -0
  18. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/__init__.py +0 -0
  19. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/agent/__init__.py +0 -0
  20. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/agent/agent_manager.py +0 -0
  21. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/agent/chat_events.py +0 -0
  22. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/agent/deep_agent.py +0 -0
  23. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/agent/multi_agent_team.py +0 -0
  24. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/agent/sandbox/__init__.py +0 -0
  25. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/agent/sandbox/file_ops.py +0 -0
  26. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/agent/sandbox/sandbox_pool.py +0 -0
  27. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/agent/sandbox/sandbox_recovery.py +0 -0
  28. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/agent/sandbox/session.py +0 -0
  29. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/auth/__init__.py +0 -0
  30. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/auth/ldap_service.py +0 -0
  31. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/config/Config.py +0 -0
  32. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/config/DatabaseConfig.py +0 -0
  33. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/config/ElasticsearchConfig.py +0 -0
  34. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/config/EmbeddingConfig.py +0 -0
  35. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/config/LLMConfig.py +0 -0
  36. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/config/LangfuseConfig.py +0 -0
  37. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/config/MQConfig.py +0 -0
  38. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/config/RedisConfig.py +0 -0
  39. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/config/RerankerConfig.py +0 -0
  40. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/config/SentryConfig.py +0 -0
  41. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/config/__init__.py +0 -0
  42. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/database/async_base_db_service.py +0 -0
  43. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/database/async_database_service.py +0 -0
  44. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/database/base_db_service.py +0 -0
  45. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/database/database_service.py +0 -0
  46. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/database/elasticsearch_service.py +0 -0
  47. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/database/redis_service.py +0 -0
  48. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/database/token_usage_db_service.py +0 -0
  49. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/health/__init__.py +0 -0
  50. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/health/health_check.py +0 -0
  51. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/health/metrics.py +0 -0
  52. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/health/ping.py +0 -0
  53. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/heartbeat_process/__init__.py +0 -0
  54. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/heartbeat_process/heartbeat_config.py +0 -0
  55. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/heartbeat_process/heartbeat_process_manager.py +0 -0
  56. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/heartbeat_process/heartbeat_process_worker.py +0 -0
  57. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/llm/__init__.py +0 -0
  58. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/llm/embedding.py +0 -0
  59. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/llm/get_llm.py +0 -0
  60. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/llm/llm_logger.py +0 -0
  61. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/llm/llm_tokens.py +0 -0
  62. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/llm/llm_with_token_tracking.py +0 -0
  63. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/llm/native_with_fallback_runnable.py +0 -0
  64. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/llm/output_fixing_runnable.py +0 -0
  65. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/llm/struct_token.py +0 -0
  66. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/llm/sy_langfuse.py +0 -0
  67. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/llm/token_usage_es_service.py +0 -0
  68. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/llm/token_usage_mysql_service.py +0 -0
  69. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/llm/usage_token.py +0 -0
  70. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/logging/__init__.py +0 -0
  71. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/logging/async_sql_logger.py +0 -0
  72. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/logging/kafka_log.py +0 -0
  73. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/logging/logger_levels.py +0 -0
  74. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/logging/logger_wrapper.py +0 -0
  75. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/logging/process_logger.py +0 -0
  76. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/logging/sql_logger.py +0 -0
  77. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/__init__.py +0 -0
  78. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/background_execution.py +0 -0
  79. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/context.py +0 -0
  80. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/cors.py +0 -0
  81. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/docs.py +0 -0
  82. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/exception.py +0 -0
  83. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/middleware.py +0 -0
  84. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/monitor_memory.py +0 -0
  85. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/mq.py +0 -0
  86. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/sandbox.py +0 -0
  87. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/timeout.py +0 -0
  88. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/middleware/traceid.py +0 -0
  89. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/models/__init__.py +0 -0
  90. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/models/base_http.py +0 -0
  91. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/models/log.py +0 -0
  92. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/models/mqlistener_config.py +0 -0
  93. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/models/mqmsg_model.py +0 -0
  94. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/models/mqsend_config.py +0 -0
  95. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/models/sandbox.py +0 -0
  96. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/models/sso_user.py +0 -0
  97. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/models/token_usage.py +0 -0
  98. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/models/token_usage_mysql.py +0 -0
  99. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/notice/__init__.py +0 -0
  100. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/notice/uvicorn_monitor.py +0 -0
  101. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/rabbitmq/process_pool_consumer.py +0 -0
  102. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/rabbitmq/rabbitmq_client.py +0 -0
  103. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/rabbitmq/rabbitmq_pool.py +0 -0
  104. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/rabbitmq/rabbitmq_service.py +0 -0
  105. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/rabbitmq/rabbitmq_service_client_manager.py +0 -0
  106. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/rabbitmq/rabbitmq_service_connection_monitor.py +0 -0
  107. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/rabbitmq/rabbitmq_service_consumer_manager.py +0 -0
  108. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/rabbitmq/rabbitmq_service_core.py +0 -0
  109. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/rabbitmq/rabbitmq_service_producer_manager.py +0 -0
  110. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/sentry/__init__.py +0 -0
  111. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/sentry/sy_sentry.py +0 -0
  112. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/services.py +0 -0
  113. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/sse/__init__.py +0 -0
  114. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/sse/event.py +0 -0
  115. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/sse/sse.py +0 -0
  116. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/synacos/__init__.py +0 -0
  117. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/synacos/example.py +0 -0
  118. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/synacos/example2.py +0 -0
  119. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/synacos/feign.py +0 -0
  120. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/synacos/feign_client.py +0 -0
  121. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/synacos/nacos_client_base.py +0 -0
  122. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/synacos/nacos_config_manager.py +0 -0
  123. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/synacos/nacos_heartbeat_manager.py +0 -0
  124. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/synacos/nacos_service.py +0 -0
  125. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/synacos/nacos_service_discovery.py +0 -0
  126. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/synacos/nacos_service_registration.py +0 -0
  127. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/synacos/param.py +0 -0
  128. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/tests/deep_agent_server.py +0 -0
  129. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/tests/test_deep_agent.py +0 -0
  130. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/tests/test_email.py +0 -0
  131. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/tests/test_mq.py +0 -0
  132. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/tools/__init__.py +0 -0
  133. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/tools/async_utils.py +0 -0
  134. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/tools/docs.py +0 -0
  135. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/tools/env.py +0 -0
  136. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/tools/merge_headers.py +0 -0
  137. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/tools/snowflake.py +0 -0
  138. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/tools/syemail.py +0 -0
  139. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon/tools/timing.py +0 -0
  140. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon_python_lib.egg-info/SOURCES.txt +0 -0
  141. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon_python_lib.egg-info/dependency_links.txt +0 -0
  142. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon_python_lib.egg-info/entry_points.txt +0 -0
  143. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon_python_lib.egg-info/requires.txt +0 -0
  144. {sycommon_python_lib-0.2.1a35 → sycommon_python_lib-0.2.1a36}/src/sycommon_python_lib.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sycommon-python-lib
3
- Version: 0.2.1a35
3
+ Version: 0.2.1a36
4
4
  Summary: Add your description here
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "sycommon-python-lib"
3
- version = "0.2.1a35"
3
+ version = "0.2.1a36"
4
4
  description = "Add your description here"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -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
- instance = instances[0]
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}")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sycommon-python-lib
3
- Version: 0.2.1a35
3
+ Version: 0.2.1a36
4
4
  Summary: Add your description here
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown