sycommon-python-lib 0.2.0b7__tar.gz → 0.2.0b8__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 (96) hide show
  1. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/PKG-INFO +1 -1
  2. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/pyproject.toml +1 -1
  3. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/rabbitmq/rabbitmq_client.py +13 -24
  4. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon_python_lib.egg-info/PKG-INFO +1 -1
  5. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/README.md +0 -0
  6. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/setup.cfg +0 -0
  7. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/command/cli.py +0 -0
  8. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/__init__.py +0 -0
  9. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/config/Config.py +0 -0
  10. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/config/DatabaseConfig.py +0 -0
  11. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/config/EmbeddingConfig.py +0 -0
  12. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/config/LLMConfig.py +0 -0
  13. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/config/LangfuseConfig.py +0 -0
  14. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/config/MQConfig.py +0 -0
  15. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/config/RerankerConfig.py +0 -0
  16. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/config/SentryConfig.py +0 -0
  17. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/config/__init__.py +0 -0
  18. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/database/async_base_db_service.py +0 -0
  19. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/database/async_database_service.py +0 -0
  20. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/database/base_db_service.py +0 -0
  21. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/database/database_service.py +0 -0
  22. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/health/__init__.py +0 -0
  23. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/health/health_check.py +0 -0
  24. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/health/metrics.py +0 -0
  25. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/health/ping.py +0 -0
  26. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/llm/__init__.py +0 -0
  27. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/llm/embedding.py +0 -0
  28. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/llm/get_llm.py +0 -0
  29. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/llm/llm_logger.py +0 -0
  30. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/llm/llm_tokens.py +0 -0
  31. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/llm/struct_token.py +0 -0
  32. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/llm/sy_langfuse.py +0 -0
  33. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/llm/usage_token.py +0 -0
  34. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/logging/__init__.py +0 -0
  35. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/logging/async_sql_logger.py +0 -0
  36. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/logging/kafka_log.py +0 -0
  37. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/logging/logger_levels.py +0 -0
  38. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/logging/logger_wrapper.py +0 -0
  39. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/logging/sql_logger.py +0 -0
  40. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/middleware/__init__.py +0 -0
  41. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/middleware/context.py +0 -0
  42. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/middleware/cors.py +0 -0
  43. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/middleware/docs.py +0 -0
  44. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/middleware/exception.py +0 -0
  45. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/middleware/middleware.py +0 -0
  46. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/middleware/monitor_memory.py +0 -0
  47. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/middleware/mq.py +0 -0
  48. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/middleware/timeout.py +0 -0
  49. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/middleware/traceid.py +0 -0
  50. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/models/__init__.py +0 -0
  51. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/models/base_http.py +0 -0
  52. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/models/log.py +0 -0
  53. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/models/mqlistener_config.py +0 -0
  54. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/models/mqmsg_model.py +0 -0
  55. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/models/mqsend_config.py +0 -0
  56. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/models/sso_user.py +0 -0
  57. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/notice/__init__.py +0 -0
  58. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/notice/uvicorn_monitor.py +0 -0
  59. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/rabbitmq/rabbitmq_pool.py +0 -0
  60. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/rabbitmq/rabbitmq_service.py +0 -0
  61. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/rabbitmq/rabbitmq_service_client_manager.py +0 -0
  62. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/rabbitmq/rabbitmq_service_connection_monitor.py +0 -0
  63. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/rabbitmq/rabbitmq_service_consumer_manager.py +0 -0
  64. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/rabbitmq/rabbitmq_service_core.py +0 -0
  65. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/rabbitmq/rabbitmq_service_producer_manager.py +0 -0
  66. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/sentry/__init__.py +0 -0
  67. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/sentry/sy_sentry.py +0 -0
  68. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/services.py +0 -0
  69. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/sse/__init__.py +0 -0
  70. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/sse/event.py +0 -0
  71. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/sse/sse.py +0 -0
  72. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/synacos/__init__.py +0 -0
  73. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/synacos/example.py +0 -0
  74. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/synacos/example2.py +0 -0
  75. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/synacos/feign.py +0 -0
  76. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/synacos/feign_client.py +0 -0
  77. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/synacos/nacos_client_base.py +0 -0
  78. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/synacos/nacos_config_manager.py +0 -0
  79. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/synacos/nacos_heartbeat_manager.py +0 -0
  80. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/synacos/nacos_service.py +0 -0
  81. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/synacos/nacos_service_discovery.py +0 -0
  82. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/synacos/nacos_service_registration.py +0 -0
  83. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/synacos/param.py +0 -0
  84. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/tests/test_email.py +0 -0
  85. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/tools/__init__.py +0 -0
  86. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/tools/docs.py +0 -0
  87. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/tools/env.py +0 -0
  88. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/tools/merge_headers.py +0 -0
  89. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/tools/snowflake.py +0 -0
  90. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/tools/syemail.py +0 -0
  91. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon/tools/timing.py +0 -0
  92. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon_python_lib.egg-info/SOURCES.txt +0 -0
  93. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon_python_lib.egg-info/dependency_links.txt +0 -0
  94. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon_python_lib.egg-info/entry_points.txt +0 -0
  95. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/src/sycommon_python_lib.egg-info/requires.txt +0 -0
  96. {sycommon_python_lib-0.2.0b7 → sycommon_python_lib-0.2.0b8}/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.0b7
3
+ Version: 0.2.0b8
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.0b7"
3
+ version = "0.2.0b8"
4
4
  description = "Add your description here"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -312,15 +312,18 @@ class RabbitMQClient:
312
312
 
313
313
  async def _process_message_callback(self, message: AbstractIncomingMessage):
314
314
  """
315
- 消息处理回调 (Anyio 兼容版)
315
+ 消息处理回调 (彻底修复跨 Loop 问题)
316
316
 
317
- 既然使用了 anyio,大部分跨 Loop 问题已解决。
318
- 保留 asyncio.to_thread 用于在子线程中隔离 CPU 密集型或阻塞型任务。
317
+ 修复策略:
318
+ 1. 移除 asyncio.run(),防止创建嵌套 Loop。
319
+ 2. 直接在当前 Loop 中调用 handler。
320
+ 3. 使用 asyncio.shield 保护任务,确保消息确认 不会因为业务异常而失败。
319
321
  """
320
322
  msg_obj = None
321
323
  trace_id = "unknown"
322
324
 
323
325
  try:
326
+ # 1. 解析消息
324
327
  try:
325
328
  body_dict = json.loads(message.body.decode("utf-8"))
326
329
  msg_obj: MQMsgModel = MQMsgModel(**body_dict)
@@ -337,34 +340,20 @@ class RabbitMQClient:
337
340
  SYLogger.set_trace_id(trace_id)
338
341
 
339
342
  if self._message_handler:
340
- # 定义子线程运行函数
341
- def run_in_isolated_thread(current_trace_id):
342
- SYLogger.set_trace_id(current_trace_id)
343
- try:
344
- return asyncio.run(self._message_handler(msg_obj, message))
345
- except Exception as e:
346
- raise e
347
-
348
- # 【关键】使用 to_thread 在子线程运行,避免阻塞主线程心跳
349
- # anyio 兼容 asyncio 的线程池接口
350
343
  try:
351
- await asyncio.to_thread(run_in_isolated_thread, trace_id)
352
- except RuntimeError as e:
353
- # 保留这个防御性检查,以防万一
354
- if "bound to a different event loop" in str(e):
355
- logger.warning(
356
- f"⚠️ 检测到跨 Loop 冲突 (TraceId: {trace_id}),"
357
- f"自动切换至【混合模式】。"
358
- )
359
- await self._message_handler(msg_obj, message)
360
- else:
361
- raise
344
+ await self._message_handler(msg_obj, message)
345
+ except asyncio.CancelledError:
346
+ logger.warning(f"消息处理被取消: {trace_id}")
347
+ raise
362
348
 
349
+ # 3. 处理成功,Ack
363
350
  await message.ack()
364
351
 
365
352
  except Exception as e:
366
353
  logger.error(
367
354
  f"❌ 消息处理异常 (TraceId: {trace_id}): {str(e)}", exc_info=True)
355
+ # 发生异常也建议 Ack(或者 Nack 并 requeue),防止消息堆积导致死信
356
+ # 这里根据业务需求决定,如果是系统错误建议 Nack,如果是业务逻辑错误建议 Ack
368
357
  try:
369
358
  await message.ack()
370
359
  except Exception:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sycommon-python-lib
3
- Version: 0.2.0b7
3
+ Version: 0.2.0b8
4
4
  Summary: Add your description here
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown