sycommon-python-lib 0.1.21__py3-none-any.whl → 0.1.46__py3-none-any.whl

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.
@@ -10,7 +10,6 @@ import yaml
10
10
  import time
11
11
  import atexit
12
12
  import random
13
- from concurrent.futures import ThreadPoolExecutor
14
13
 
15
14
  from sycommon.config.Config import SingletonMeta
16
15
  from sycommon.logging.kafka_log import SYLogger
@@ -34,22 +33,17 @@ class NacosService(metaclass=SingletonMeta):
34
33
  # 添加可重入锁用于状态同步
35
34
  self._state_lock = threading.RLock()
36
35
 
37
- # 优化线程池配置,增加工作线程数量
38
- self._executor = ThreadPoolExecutor(max_workers=1) # 主线程池
39
- self._heartbeat_executor = ThreadPoolExecutor(
40
- max_workers=1) # 增加心跳线程
41
- self._monitor_executor = ThreadPoolExecutor(
42
- max_workers=1) # 增加监控线程
43
-
44
36
  # 配置参数
45
37
  self.max_retries = self.nacos_config.get('maxRetries', 5)
46
- self.retry_delay = self.nacos_config.get('retryDelay', 1)
47
- self.retry_backoff = self.nacos_config.get('retryBackoff', 1.5)
38
+ self.retry_delay = self.nacos_config.get('retryDelay', 5)
48
39
  self.max_retry_delay = self.nacos_config.get('maxRetryDelay', 30)
40
+ # 心跳间隔:优先从配置读取,默认15秒(可通过配置修改)
49
41
  self.heartbeat_interval = self.nacos_config.get(
50
- 'heartbeatInterval', 5)
42
+ 'heartbeatInterval', 15)
43
+ # 心跳超时:固定设置为10秒(需求指定)
44
+ self.heartbeat_timeout = 15
51
45
  self.register_retry_interval = self.nacos_config.get(
52
- 'registerRetryInterval', 5) # 注册重试间隔
46
+ 'registerRetryInterval', 15) # 注册重试间隔
53
47
 
54
48
  # 长期重试配置
55
49
  self.long_term_retry_delay = self.nacos_config.get(
@@ -57,11 +51,13 @@ class NacosService(metaclass=SingletonMeta):
57
51
  self.max_long_term_retries = self.nacos_config.get(
58
52
  'maxLongTermRetries', -1) # -1表示无限重试
59
53
 
60
- # 注册验证配置
54
+ # 注册验证配置:优化默认值(增加次数+延长间隔)
61
55
  self.registration_verify_count = self.nacos_config.get(
62
56
  'registrationVerifyCount', 1) # 验证次数
63
57
  self.registration_verify_interval = self.nacos_config.get(
64
58
  'registrationVerifyInterval', 1) # 验证间隔
59
+ self.registration_post_delay = self.nacos_config.get(
60
+ 'registrationPostDelay', 3) # 注册后延迟3秒再开始验证
65
61
 
66
62
  self.real_ip = self.get_service_ip(self.host)
67
63
  self._long_term_retry_count = 0 # 长期重试计数器
@@ -87,10 +83,18 @@ class NacosService(metaclass=SingletonMeta):
87
83
  # 心跳相关
88
84
  self._last_heartbeat_time = 0
89
85
  self._heartbeat_fail_count = 0
86
+ self._heartbeat_lock = threading.Lock()
90
87
  self._heartbeat_thread = None
88
+
91
89
  self.max_heartbeat_timeout = self.nacos_config.get(
92
- 'maxHeartbeatTimeout', 30) # 最大无心跳时间(秒)
93
- self._last_successful_heartbeat = time.time() # 上次成功心跳时间戳
90
+ 'maxHeartbeatTimeout', 30)
91
+ self._last_successful_heartbeat = time.time()
92
+ # 连接监控检查间隔(新增配置,默认30秒,避免硬编码)
93
+ self.connection_check_interval = self.nacos_config.get(
94
+ 'connectionCheckInterval', 30)
95
+ # 配置监视线程检查间隔(默认30秒)
96
+ self.config_watch_interval = self.nacos_config.get(
97
+ 'configWatchInterval', 30)
94
98
 
95
99
  # 启动配置监视线程
96
100
  self._watch_thread = threading.Thread(
@@ -121,8 +125,7 @@ class NacosService(metaclass=SingletonMeta):
121
125
  self._client_initialized = True
122
126
  return True
123
127
  except Exception as e:
124
- delay = min(self.retry_delay * (self.retry_backoff **
125
- attempt), self.max_retry_delay)
128
+ delay = min(self.retry_delay, self.max_retry_delay)
126
129
  SYLogger.error(
127
130
  f"nacos:客户端初始化失败 (尝试 {attempt+1}/{self.max_retries}): {e}")
128
131
  time.sleep(delay)
@@ -185,8 +188,7 @@ class NacosService(metaclass=SingletonMeta):
185
188
 
186
189
  except Exception as e:
187
190
  attempt += 1
188
- delay = min(self.retry_delay * (self.retry_backoff **
189
- (attempt - 1)), self.max_retry_delay)
191
+ delay = min(self.retry_delay, self.max_retry_delay)
190
192
 
191
193
  SYLogger.error(
192
194
  f"nacos:客户端初始化失败 (尝试 {attempt}/{max_attempts}): {e}")
@@ -300,12 +302,12 @@ class NacosService(metaclass=SingletonMeta):
300
302
  if not register_success:
301
303
  raise RuntimeError("nacos:服务注册请求失败")
302
304
 
303
- # 注册请求发送成功后,等待一小段时间让Nacos服务器处理
305
+ # 关键优化1:注册请求发送后,延迟一段时间再验证(默认3秒)
304
306
  SYLogger.info(
305
- f"nacos:服务注册请求已发送,等待 {self.registration_verify_interval} 秒后验证")
306
- time.sleep(self.registration_verify_interval)
307
+ f"nacos:服务注册请求已发送,延迟 {self.registration_post_delay} 秒后开始验证(确保Nacos服务器完成实例写入)")
308
+ time.sleep(self.registration_post_delay)
307
309
 
308
- # 多次验证服务是否真正注册成功
310
+ # 关键优化2:多次验证服务是否真正注册成功(默认3次,每次间隔2秒)
309
311
  registered = self.verify_registration()
310
312
 
311
313
  # 带锁更新注册状态
@@ -334,8 +336,7 @@ class NacosService(metaclass=SingletonMeta):
334
336
  except Exception as e:
335
337
  last_error = str(e)
336
338
  retry_count += 1
337
- delay = min(self.register_retry_interval *
338
- (self.retry_backoff ** (retry_count - 1)), self.max_retry_delay)
339
+ delay = min(self.register_retry_interval, self.max_retry_delay)
339
340
 
340
341
  SYLogger.warning(
341
342
  f"nacos:服务注册尝试 {retry_count} 失败: {last_error},{delay}秒后重试")
@@ -367,9 +368,9 @@ class NacosService(metaclass=SingletonMeta):
367
368
 
368
369
  metadata = {
369
370
  "ignore-metrics": "true",
370
- "preserved.heart.beat.interval": "3000", # 心跳间隔 3 秒
371
- "preserved.heart.beat.timeout": "15000", # 心跳超时 15 秒
372
- "preserved.ip.delete.timeout": "30000" # 实例删除超时 30 秒
371
+ # "preserved.heart.beat.interval": "3000", # 心跳间隔 3 秒
372
+ # "preserved.heart.beat.timeout": "15000", # 心跳超时 15 秒
373
+ # "preserved.ip.delete.timeout": "30000" # 实例删除超时 30 秒
373
374
  }
374
375
  if self.version:
375
376
  metadata["version"] = self.version
@@ -421,8 +422,13 @@ class NacosService(metaclass=SingletonMeta):
421
422
  timeout = 60 # 60秒超时
422
423
  start_time = time.time()
423
424
 
424
- # 启动注册线程,不阻塞主线程
425
- instance._executor.submit(instance.register_with_retry)
425
+ # 启动注册线程,不阻塞主线程(替换原线程池)
426
+ register_thread = threading.Thread(
427
+ target=instance.register_with_retry,
428
+ daemon=True,
429
+ name="NacosRegisterThread"
430
+ )
431
+ register_thread.start()
426
432
 
427
433
  # 等待注册完成或超时
428
434
  while True:
@@ -453,97 +459,135 @@ class NacosService(metaclass=SingletonMeta):
453
459
 
454
460
  # 启动连接监控线程
455
461
  threading.Thread(target=instance.monitor_connection,
456
- daemon=True).start()
462
+ daemon=True, name="NacosConnectionMonitorThread").start()
457
463
  else:
458
464
  SYLogger.info("nacos:本地开发模式,跳过服务注册流程")
459
465
 
460
466
  return instance
461
467
 
462
468
  def start_heartbeat(self):
463
- """启动心跳线程"""
464
- if self._heartbeat_thread and self._heartbeat_thread.is_alive():
465
- return
469
+ """启动心跳线程(确保单例)"""
470
+ with self._heartbeat_lock: # 加锁确保线程安全
471
+ # 双重检查:先判断线程是否已存在且存活
472
+ if self._heartbeat_thread is not None and self._heartbeat_thread.is_alive():
473
+ return
466
474
 
467
- self._heartbeat_thread = threading.Thread(
468
- target=self._send_heartbeat_loop,
469
- name="NacosHeartbeatThread",
470
- daemon=True
471
- )
472
- # 设置线程为守护线程并尝试提高优先级
473
- self._heartbeat_thread.daemon = True
474
- self._heartbeat_thread.start()
475
+ # 彻底清理可能的残留线程引用
476
+ self._heartbeat_thread = None
475
477
 
476
- try:
477
- # 尝试提高线程优先级
478
- if hasattr(os, 'sched_setscheduler'):
479
- os.sched_setscheduler(
480
- self._heartbeat_thread.ident, os.SCHED_FIFO, os.sched_param(99))
481
- elif hasattr(os, 'nice'):
482
- os.nice(-10) # 在Unix系统上尝试提高优先级
483
- SYLogger.info("nacos:心跳线程已启动并尝试提高优先级")
484
- except Exception as e:
485
- SYLogger.warning(f"nacos:无法提高心跳线程优先级: {e}")
478
+ # 创建新的心跳线程
479
+ self._heartbeat_thread = threading.Thread(
480
+ target=self._send_heartbeat_loop,
481
+ name="NacosHeartbeatThread",
482
+ daemon=True
483
+ )
484
+ self._heartbeat_thread.daemon = True
485
+ self._heartbeat_thread.start()
486
+ SYLogger.info(
487
+ f"nacos:心跳线程启动,线程ID: {self._heartbeat_thread.ident}"
488
+ f"心跳间隔: {self.heartbeat_interval}秒,"
489
+ f"心跳超时: {self.heartbeat_timeout}秒"
490
+ )
486
491
 
487
492
  def _send_heartbeat_loop(self):
488
493
  """优化后的心跳发送循环,确保严格按间隔执行"""
489
- SYLogger.info("nacos:优化版心跳线程开始运行")
490
- last_heartbeat_time = time.time() # 初始时间戳
494
+ current_thread = threading.current_thread()
495
+ thread_ident = current_thread.ident
496
+ SYLogger.info(
497
+ f"nacos:心跳循环启动 - 线程ID: {thread_ident}, "
498
+ f"配置间隔: {self.heartbeat_interval}秒, "
499
+ f"超时时间: {self.heartbeat_timeout}秒"
500
+ )
501
+
502
+ consecutive_fail = 0 # 连续失败计数器
491
503
 
492
504
  while not self._shutdown_event.is_set():
505
+ # 记录当前时间,作为本次心跳的基准
493
506
  current_time = time.time()
494
- # 计算距离下次心跳的时间(确保严格按间隔执行)
495
- sleep_time = max(0, self.heartbeat_interval -
496
- (current_time - last_heartbeat_time))
497
-
498
- if sleep_time > 0:
499
- self._shutdown_event.wait(sleep_time) # 精准等待
500
507
 
501
- # 执行心跳逻辑
502
508
  try:
503
- # 带锁检查注册状态
509
+ # 检查注册状态(带锁读取)
504
510
  with self._state_lock:
505
511
  registered_status = self.registered
506
512
 
507
- if registered_status and self.check_service_registered():
513
+ if not registered_status:
514
+ SYLogger.warning(
515
+ f"nacos:服务未注册,跳过心跳 - 线程ID: {thread_ident}")
516
+ consecutive_fail = 0
517
+ else:
518
+ # 发送心跳(10秒超时)
508
519
  success = self.send_heartbeat()
509
520
  if success:
510
- self._last_successful_heartbeat = time.time()
521
+ consecutive_fail = 0
522
+ self._last_successful_heartbeat = current_time
511
523
  SYLogger.info(
512
- f"nacos:心跳发送成功,时间: {self._last_successful_heartbeat:.3f}")
524
+ f"nacos:心跳发送成功 - 时间: {current_time:.3f}, "
525
+ f"间隔: {self.heartbeat_interval}秒"
526
+ )
513
527
  else:
528
+ consecutive_fail += 1
514
529
  SYLogger.warning(
515
- f"nacos:心跳发送失败,已持续{current_time - self._last_successful_heartbeat:.1f}")
516
- else:
517
- SYLogger.warning("nacos:服务未注册,尝试重新注册")
518
- # 检查线程池是否已关闭
519
- if not self._executor._shutdown:
520
- self._executor.submit(self.register_with_retry)
521
- else:
522
- SYLogger.warning("nacos:线程池已关闭,无法提交注册任务")
523
- finally:
524
- last_heartbeat_time = time.time() # 更新上次执行时间
530
+ f"nacos:心跳发送失败 - 连续失败: {consecutive_fail}"
531
+ )
532
+ if consecutive_fail >= 5:
533
+ SYLogger.error("nacos:心跳连续失败5次,尝试重连")
534
+ self.reconnect_nacos_client()
535
+ consecutive_fail = 0
536
+
537
+ except Exception as e:
538
+ consecutive_fail += 1
539
+ SYLogger.error(
540
+ f"nacos:心跳异常: {str(e)}, 连续失败: {consecutive_fail}次")
541
+
542
+ # 计算下次执行时间(当前时间 + 配置间隔),确保间隔稳定
543
+ next_run_time = current_time + self.heartbeat_interval
544
+ sleep_time = max(0, next_run_time - time.time()
545
+ ) # 避免负数(处理耗时超过间隔的情况)
546
+ self._shutdown_event.wait(sleep_time) # 精准休眠至下次执行时间
547
+
548
+ SYLogger.info(f"nacos:心跳循环已停止 - 线程ID: {thread_ident}")
525
549
 
526
550
  def send_heartbeat(self):
527
- """发送心跳并添加超时控制"""
551
+ """发送心跳并添加10秒超时控制(替换线程池实现)"""
528
552
  if not self.ensure_client_connected():
529
553
  SYLogger.warning("nacos:客户端未连接,心跳发送失败")
530
554
  return False
531
555
 
532
- try:
533
- # 严格控制心跳超时(3秒)
534
- future = self._heartbeat_executor.submit(
535
- self._send_heartbeat_internal)
536
- result = future.result(timeout=3) # 超时后抛出异常
537
-
538
- if result:
539
- # 只有确认成功才更新时间戳
540
- self._last_successful_heartbeat = time.time()
541
- return result
542
- except Exception as e:
543
- SYLogger.error(f"nacos:发送心跳时发生异常: {e}")
556
+ # 用线程+join实现10秒超时控制
557
+ result_list = [] # 用于线程间传递结果
558
+
559
+ def heartbeat_task():
560
+ """心跳实际执行任务"""
561
+ try:
562
+ result = self._send_heartbeat_internal()
563
+ result_list.append(result)
564
+ except Exception as e:
565
+ SYLogger.error(f"nacos:心跳任务执行异常: {e}")
566
+ result_list.append(False)
567
+
568
+ # 启动心跳任务线程
569
+ task_thread = threading.Thread(
570
+ target=heartbeat_task,
571
+ daemon=True,
572
+ name="NacosHeartbeatTaskThread"
573
+ )
574
+ task_thread.start()
575
+
576
+ # 等待线程完成,最多等待10秒
577
+ task_thread.join(timeout=self.heartbeat_timeout)
578
+
579
+ # 处理结果
580
+ if not result_list:
581
+ # 超时未返回
582
+ SYLogger.error(f"nacos:心跳发送超时({self.heartbeat_timeout}秒)")
544
583
  self._client_initialized = False # 强制重连
545
584
  return False
546
585
 
586
+ # 检查心跳结果
587
+ if result_list[0]:
588
+ self._last_successful_heartbeat = time.time()
589
+ return result_list[0]
590
+
547
591
  def _send_heartbeat_internal(self):
548
592
  """实际的心跳发送逻辑"""
549
593
  result = self.nacos_client.send_heartbeat(
@@ -571,10 +615,9 @@ class NacosService(metaclass=SingletonMeta):
571
615
 
572
616
  def monitor_connection(self):
573
617
  """优化的连接监控线程,缩短检查间隔"""
574
- # 缩短检查间隔(5秒一次)
575
- check_interval = self.nacos_config.get('checkInterval', 5)
576
- thread_start_time = time.time() # 线程启动时间
577
- check_counter = 0 # 检查计数器
618
+ check_interval = self.connection_check_interval
619
+ thread_start_time = time.time()
620
+ check_counter = 0
578
621
 
579
622
  while not self._shutdown_event.is_set():
580
623
  try:
@@ -600,9 +643,13 @@ class NacosService(metaclass=SingletonMeta):
600
643
  else:
601
644
  self.registered = False
602
645
  SYLogger.warning(f"nacos:服务实例未注册,尝试重新注册")
603
- # 不在锁内调用可能耗时的操作
604
- self._monitor_executor.submit(
605
- self.register_with_retry)
646
+ # 启动临时线程执行重新注册(替换原线程池)
647
+ retry_thread = threading.Thread(
648
+ target=self.register_with_retry,
649
+ daemon=True,
650
+ name="NacosRetryRegisterThread"
651
+ )
652
+ retry_thread.start()
606
653
 
607
654
  # 20%的概率执行深度检查
608
655
  if random.random() < 0.2:
@@ -653,13 +700,6 @@ class NacosService(metaclass=SingletonMeta):
653
700
  SYLogger.error(f"nacos:注销服务时发生错误: {e}")
654
701
  finally:
655
702
  self._shutdown_event.set()
656
- # 优雅地关闭线程池
657
- if self._executor and not self._executor._shutdown:
658
- self._executor.shutdown(wait=True)
659
- if self._heartbeat_executor and not self._heartbeat_executor._shutdown:
660
- self._heartbeat_executor.shutdown(wait=True)
661
- if self._monitor_executor and not self._monitor_executor._shutdown:
662
- self._monitor_executor.shutdown(wait=True)
663
703
 
664
704
  def handle_signal(self, signum, frame):
665
705
  """处理退出信号"""
@@ -724,18 +764,19 @@ class NacosService(metaclass=SingletonMeta):
724
764
 
725
765
  def _watch_configs(self):
726
766
  """配置监听线程"""
727
- check_interval = 5 # 固定检查间隔
767
+ check_interval = self.config_watch_interval
728
768
 
729
769
  while not self._shutdown_event.is_set():
730
770
  try:
731
771
  for data_id, callback in list(self._config_listeners.items()):
732
772
  new_config = self.get_config(data_id)
733
773
  if new_config and new_config != self._config_cache.get(data_id):
734
- self._executor.submit(callback, new_config)
774
+ # 直接执行回调(替换原线程池,配置回调通常为轻量操作)
775
+ callback(new_config)
735
776
  self._config_cache[data_id] = new_config
736
777
  except Exception as e:
737
778
  SYLogger.error(f"nacos:配置监视线程异常: {str(e)}")
738
- self._shutdown_event.wait(check_interval) # 检查间隔
779
+ self._shutdown_event.wait(check_interval)
739
780
 
740
781
  def discover_services(self, service_name: str, group: str = "DEFAULT_GROUP", version: str = None) -> List[Dict]:
741
782
  """发现服务实例列表 (与Java格式兼容)"""
@@ -0,0 +1,75 @@
1
+ from typing import Any, Optional
2
+
3
+ # ------------------------------
4
+ # 参数类型标记类(兼容 Pydantic)
5
+ # ------------------------------
6
+
7
+
8
+ class Param:
9
+ """基础参数元信息类"""
10
+
11
+ def __init__(
12
+ self,
13
+ default: Any = ...,
14
+ description: str = "",
15
+ alias: Optional[str] = None,
16
+ deprecated: bool = False
17
+ ):
18
+ self.default = default # ... 表示必填
19
+ self.description = description
20
+ self.alias = alias
21
+ self.deprecated = deprecated
22
+
23
+ def is_required(self) -> bool:
24
+ return self.default is ...
25
+
26
+ def get_key(self, param_name: str) -> str:
27
+ return self.alias if self.alias is not None else param_name
28
+
29
+
30
+ class Path(Param):
31
+ """路径参数"""
32
+ pass
33
+
34
+
35
+ class Query(Param):
36
+ """查询参数"""
37
+ pass
38
+
39
+
40
+ class Header(Param):
41
+ """请求头参数"""
42
+
43
+ def __init__(self, *args, convert_underscores: bool = True, **kwargs):
44
+ super().__init__(*args, **kwargs)
45
+ self.convert_underscores = convert_underscores
46
+
47
+ def get_key(self, param_name: str) -> str:
48
+ key = super().get_key(param_name)
49
+ return key.replace("_", "-") if self.convert_underscores else key
50
+
51
+
52
+ class Cookie(Param):
53
+ """Cookie参数"""
54
+ pass
55
+
56
+
57
+ class Body(Param):
58
+ """JSON请求体参数(支持Pydantic模型)"""
59
+
60
+ def __init__(self, *args, embed: bool = False, ** kwargs):
61
+ super().__init__(*args, **kwargs)
62
+ self.embed = embed # 是否包装在键中
63
+
64
+
65
+ class Form(Param):
66
+ """表单参数(支持Pydantic模型)"""
67
+ pass
68
+
69
+
70
+ class File(Param):
71
+ """文件上传参数"""
72
+
73
+ def __init__(self, *args, field_name: str = "file", ** kwargs):
74
+ super().__init__(*args, **kwargs)
75
+ self.field_name = field_name
@@ -1,24 +1,24 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sycommon-python-lib
3
- Version: 0.1.21
3
+ Version: 0.1.46
4
4
  Summary: Add your description here
5
5
  Requires-Python: >=3.10
6
6
  Description-Content-Type: text/markdown
7
- Requires-Dist: aio-pika>=9.5.7
8
- Requires-Dist: aiohttp>=3.12.15
7
+ Requires-Dist: aio-pika>=9.5.8
8
+ Requires-Dist: aiohttp>=3.13.2
9
9
  Requires-Dist: decorator>=5.2.1
10
- Requires-Dist: fastapi>=0.118.0
11
- Requires-Dist: kafka-python>=2.2.15
10
+ Requires-Dist: fastapi>=0.121.2
11
+ Requires-Dist: kafka-python>=2.2.16
12
12
  Requires-Dist: loguru>=0.7.3
13
- Requires-Dist: mysql-connector-python>=9.4.0
13
+ Requires-Dist: mysql-connector-python>=9.5.0
14
14
  Requires-Dist: nacos-sdk-python>=2.0.9
15
- Requires-Dist: pydantic>=2.11.9
16
- Requires-Dist: python-dotenv>=1.1.1
15
+ Requires-Dist: pydantic>=2.12.4
16
+ Requires-Dist: python-dotenv>=1.2.1
17
17
  Requires-Dist: pyyaml>=6.0.3
18
- Requires-Dist: sqlalchemy>=2.0.43
19
- Requires-Dist: starlette>=0.46.2
18
+ Requires-Dist: sqlalchemy>=2.0.44
19
+ Requires-Dist: starlette>=0.49.3
20
20
  Requires-Dist: uuid>=1.30
21
- Requires-Dist: uvicorn>=0.37.0
21
+ Requires-Dist: uvicorn>=0.38.0
22
22
 
23
23
  # sycommon-python-lib
24
24
 
@@ -1,6 +1,6 @@
1
1
  command/cli.py,sha256=bP2LCLkRvfETIwWkVD70q5xFxMI4D3BpH09Ws1f-ENc,5849
2
2
  sycommon/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- sycommon/services.py,sha256=s9xbXiwehZeO4ZnS_8UKFY-LBkdGwbmsK-BB3pmFZuo,8766
3
+ sycommon/services.py,sha256=LHMRxxRvLAiekkVspaQClBgAR_jLKqiJpd5hqF74MIE,11369
4
4
  sycommon/config/Config.py,sha256=9yO5b8WfvEDvkyrGrlwrLFasgh_-MjcEvGF20Gz5Xo4,3041
5
5
  sycommon/config/DatabaseConfig.py,sha256=ILiUuYT9_xJZE2W-RYuC3JCt_YLKc1sbH13-MHIOPhg,804
6
6
  sycommon/config/EmbeddingConfig.py,sha256=gPKwiDYbeu1GpdIZXMmgqM7JqBIzCXi0yYuGRLZooMI,362
@@ -9,46 +9,51 @@ sycommon/config/MQConfig.py,sha256=_RDcmIdyWKjmgM5ZnriOoI-DpaxgXs7CD0awdAD6z88,2
9
9
  sycommon/config/RerankerConfig.py,sha256=dohekaY_eTynmMimIuKHBYGXXQO6rJjSkm94OPLuMik,322
10
10
  sycommon/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
11
  sycommon/database/base_db_service.py,sha256=J5ELHMNeGfzA6zVcASPSPZ0XNKrRY3_gdGmVkZw3Mto,946
12
- sycommon/database/database_service.py,sha256=B9tCaMsKGK87XF20YQh-eGupa3dq0JXymKnAAJvS2DQ,3060
12
+ sycommon/database/database_service.py,sha256=mun5vgM7nkuH6_UyHLHqQ2Qk_5gRgMxJu4_obIKLT6o,3253
13
13
  sycommon/health/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
14
  sycommon/health/health_check.py,sha256=EhfbhspRpQiKJaxdtE-PzpKQO_ucaFKtQxIm16F5Mpk,391
15
15
  sycommon/health/metrics.py,sha256=fHqO73JuhoZkNPR-xIlxieXiTCvttq-kG-tvxag1s1s,268
16
16
  sycommon/health/ping.py,sha256=FTlnIKk5y1mPfS1ZGOeT5IM_2udF5aqVLubEtuBp18M,250
17
17
  sycommon/logging/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
- sycommon/logging/kafka_log.py,sha256=g6X46GlqJMzMMZEhbNa-eTswzkF8ILBHDYQFbjz6j54,20757
18
+ sycommon/logging/kafka_log.py,sha256=qHq4sU42aGrTm9DWYKxGDp1pe9ENfYSbzI4iPDPNvJQ,21128
19
19
  sycommon/logging/logger_wrapper.py,sha256=TiHsrIIHiQMzXgXK12-0KIpU9GhwQJOoHslakzmq2zc,357
20
+ sycommon/logging/sql_logger.py,sha256=aEU3OGnI_51Tjyuuf4FpUi9KPTceFRuKAOyQbPzGhzM,2021
20
21
  sycommon/middleware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
22
  sycommon/middleware/context.py,sha256=_5ghpv4u_yAvjkgM-XDx8OnO-YI1XtntHrXsHJHZkwo,88
22
23
  sycommon/middleware/cors.py,sha256=0B5d_ovD56wcH9TfktRs88Q09R9f8Xx5h5ALWYvE8Iw,600
23
24
  sycommon/middleware/docs.py,sha256=bVdDBIHXGVBv562MQLSroa1DgHoObxR9gFzv71PIejg,1187
24
25
  sycommon/middleware/exception.py,sha256=Bk8IchNND1wg6tUX9hf4xWeEJhvA-E_zE9ysBpRZrqE,3010
25
- sycommon/middleware/middleware.py,sha256=6JCZQY8r5H50_-yN0gRf-MFGSC0NmCqKa6YkrbDvo0k,1451
26
+ sycommon/middleware/middleware.py,sha256=SzZ4wufSNdwC4Ppw99TE7a6AVGkrZRc55NHSrA3PiC8,1447
26
27
  sycommon/middleware/monitor_memory.py,sha256=pYRK-wRuDd6enSg9Pf8tQxPdYQS6S0AyjyXeKFRLKEs,628
27
28
  sycommon/middleware/mq.py,sha256=4wBqiT5wJGcrfjk2GSr0_U3TStBxoNpHTzcRxVlMEHE,183
28
29
  sycommon/middleware/timeout.py,sha256=fImlAPLm4Oa8N9goXtT_0os1GZPCi9F92OgXU81DgDU,656
29
- sycommon/middleware/traceid.py,sha256=oGTJ2jtdea_3NgaAwXLpUug5dGUYRQeM4r1n2icuvC8,6839
30
+ sycommon/middleware/traceid.py,sha256=ugqPgHdUydj7m481rM_RH-yrIK9hAdkLemdPSSOnQvw,6821
30
31
  sycommon/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
32
  sycommon/models/base_http.py,sha256=EICAAibx3xhjBsLqm35Mi3DCqxp0FME4rD_3iQVjT_E,3051
32
33
  sycommon/models/log.py,sha256=rZpj6VkDRxK3B6H7XSeWdYZshU8F0Sks8bq1p6pPlDw,500
33
- sycommon/models/mqlistener_config.py,sha256=PPwhAVJ2AWvVAvNox_1t0fuBKTyRH3Ui9cuuU-q7Byo,1590
34
+ sycommon/models/mqlistener_config.py,sha256=vXp2uMmd0XQ5B9noSRXWHewTy-juQ2y7IsWtISJD5aI,1661
34
35
  sycommon/models/mqmsg_model.py,sha256=cxn0M5b0utQK6crMYmL-1waeGYHvK3AlGaRy23clqTE,277
35
36
  sycommon/models/mqsend_config.py,sha256=NQX9dc8PpuquMG36GCVhJe8omAW1KVXXqr6lSRU6D7I,268
36
37
  sycommon/models/sso_user.py,sha256=i1WAN6k5sPcPApQEdtjpWDy7VrzWLpOrOQewGLGoGIw,2702
37
- sycommon/rabbitmq/rabbitmq_client.py,sha256=Grjl_vDFe8fzyjw-bjOE_0keQwi-MQgB_GejCcBssTQ,27099
38
- sycommon/rabbitmq/rabbitmq_pool.py,sha256=_NMOO4CZy-I_anMqpzfYinz-8373_rg5FM9eqzdjGyU,3598
39
- sycommon/rabbitmq/rabbitmq_service.py,sha256=NWoMtRhvLjEsIX3sMgaSkrguE3gT5wLYj0u7laWZh8c,29997
38
+ sycommon/rabbitmq/rabbitmq_client.py,sha256=dKpiptV892VbW3fErAoRZSE9UVVBZvbVPM3qPu8rQIk,21573
39
+ sycommon/rabbitmq/rabbitmq_pool.py,sha256=VLJ6JIIoVf1_NKV7FNmDFVkX5klN2JtLzbuUaaroEdc,27096
40
+ sycommon/rabbitmq/rabbitmq_service.py,sha256=UUvGkmDBQ7xTdCLYqkDSYZw5-FUNU7vnmgmANh4Z_bI,39960
40
41
  sycommon/sse/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
42
  sycommon/sse/event.py,sha256=k_rBJy23R7crtzQeetT0Q73D8o5-5p-eESGSs_BPOj0,2797
42
43
  sycommon/sse/sse.py,sha256=__CfWEcYxOxQ-HpLor4LTZ5hLWqw9-2X7CngqbVHsfw,10128
43
44
  sycommon/synacos/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
44
- sycommon/synacos/feign.py,sha256=qALBl3YwVGvAzgx6tvwW84GptfS1u8WpapTRTygZROM,21282
45
- sycommon/synacos/nacos_service.py,sha256=WylpKPd6Q7xsqcvxWWwsLTauuQ1H94p596IQZVT429k,33863
45
+ sycommon/synacos/example.py,sha256=61XL03tU8WTNOo3FUduf93F2fAwah1S0lbH1ufhRhRk,5739
46
+ sycommon/synacos/example2.py,sha256=adUaru3Hy482KrOA17DfaC4nwvLj8etIDS_KrWLWmCU,4811
47
+ sycommon/synacos/feign.py,sha256=-2tuGCqoSM3ddSoSz7h1RJTB06hn8K26v_1ev4qLsTU,7728
48
+ sycommon/synacos/feign_client.py,sha256=JxzxohrsscQNlAjRVo_3ZQrMQSfVHFOtRYyEnP6sDGk,15205
49
+ sycommon/synacos/nacos_service.py,sha256=2m1ZxIii3r657kQJfp7C7I5bxBUEGDweYMfloUUmBSw,35389
50
+ sycommon/synacos/param.py,sha256=KcfSkxnXOa0TGmCjY8hdzU9pzUsA8-4PeyBKWI2-568,1765
46
51
  sycommon/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
52
  sycommon/tools/docs.py,sha256=OPj2ETheuWjXLyaXtaZPbwmJKfJaYXV5s4XMVAUNrms,1607
48
53
  sycommon/tools/snowflake.py,sha256=DdEj3T5r5OEvikp3puxqmmmz6BrggxomoSlnsRFb5dM,1174
49
54
  sycommon/tools/timing.py,sha256=OiiE7P07lRoMzX9kzb8sZU9cDb0zNnqIlY5pWqHcnkY,2064
50
- sycommon_python_lib-0.1.21.dist-info/METADATA,sha256=vKk2qu8-OnQz-uQ_L215FTYtyJnvfD2noOfJjO4jfH4,7038
51
- sycommon_python_lib-0.1.21.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
52
- sycommon_python_lib-0.1.21.dist-info/entry_points.txt,sha256=q_h2nbvhhmdnsOUZEIwpuoDjaNfBF9XqppDEmQn9d_A,46
53
- sycommon_python_lib-0.1.21.dist-info/top_level.txt,sha256=98CJ-cyM2WIKxLz-Pf0AitWLhJyrfXvyY8slwjTXNuc,17
54
- sycommon_python_lib-0.1.21.dist-info/RECORD,,
55
+ sycommon_python_lib-0.1.46.dist-info/METADATA,sha256=TAAHgjLYJMlud71VM9Q_Fe98-3cNO9Gj2-mgUXmUWPI,7037
56
+ sycommon_python_lib-0.1.46.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
57
+ sycommon_python_lib-0.1.46.dist-info/entry_points.txt,sha256=q_h2nbvhhmdnsOUZEIwpuoDjaNfBF9XqppDEmQn9d_A,46
58
+ sycommon_python_lib-0.1.46.dist-info/top_level.txt,sha256=98CJ-cyM2WIKxLz-Pf0AitWLhJyrfXvyY8slwjTXNuc,17
59
+ sycommon_python_lib-0.1.46.dist-info/RECORD,,