mdbq 4.0.108__tar.gz → 4.0.110__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.

Potentially problematic release.


This version of mdbq might be problematic. Click here for more details.

Files changed (45) hide show
  1. {mdbq-4.0.108 → mdbq-4.0.110}/PKG-INFO +1 -1
  2. mdbq-4.0.110/mdbq/__version__.py +1 -0
  3. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/redis/redis_cache.py +44 -3
  4. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq.egg-info/PKG-INFO +1 -1
  5. mdbq-4.0.108/mdbq/__version__.py +0 -1
  6. {mdbq-4.0.108 → mdbq-4.0.110}/README.txt +0 -0
  7. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/__init__.py +0 -0
  8. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/auth/__init__.py +0 -0
  9. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/auth/auth_backend.py +0 -0
  10. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/auth/rate_limiter.py +0 -0
  11. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/js/__init__.py +0 -0
  12. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/js/jc.py +0 -0
  13. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/log/__init__.py +0 -0
  14. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/log/mylogger.py +0 -0
  15. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/myconf/__init__.py +0 -0
  16. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/myconf/myconf.py +0 -0
  17. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/mysql/__init__.py +0 -0
  18. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/mysql/deduplicator.py +0 -0
  19. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/mysql/mysql.py +0 -0
  20. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/mysql/s_query.py +0 -0
  21. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/mysql/unique_.py +0 -0
  22. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/mysql/uploader.py +0 -0
  23. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/other/__init__.py +0 -0
  24. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/other/download_sku_picture.py +0 -0
  25. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/other/error_handler.py +0 -0
  26. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/other/otk.py +0 -0
  27. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/other/pov_city.py +0 -0
  28. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/other/ua_sj.py +0 -0
  29. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/pbix/__init__.py +0 -0
  30. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/pbix/pbix_refresh.py +0 -0
  31. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/pbix/refresh_all.py +0 -0
  32. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/redis/__init__.py +0 -0
  33. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/redis/getredis.py +0 -0
  34. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/route/__init__.py +0 -0
  35. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/route/analytics.py +0 -0
  36. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/route/monitor.py +0 -0
  37. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/route/routes.py +0 -0
  38. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/selenium/__init__.py +0 -0
  39. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/selenium/get_driver.py +0 -0
  40. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/spider/__init__.py +0 -0
  41. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq.egg-info/SOURCES.txt +0 -0
  42. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq.egg-info/dependency_links.txt +0 -0
  43. {mdbq-4.0.108 → mdbq-4.0.110}/mdbq.egg-info/top_level.txt +0 -0
  44. {mdbq-4.0.108 → mdbq-4.0.110}/setup.cfg +0 -0
  45. {mdbq-4.0.108 → mdbq-4.0.110}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: mdbq
3
- Version: 4.0.108
3
+ Version: 4.0.110
4
4
  Home-page: https://pypi.org/project/mdbq
5
5
  Author: xigua,
6
6
  Author-email: 2587125111@qq.com
@@ -0,0 +1 @@
1
+ VERSION = '4.0.110'
@@ -15,7 +15,9 @@ import json
15
15
  import time
16
16
  import threading
17
17
  import socket
18
- from datetime import datetime
18
+ from datetime import datetime, date
19
+ from decimal import Decimal
20
+ from uuid import UUID
19
21
  from typing import Optional, Dict, Any, List, Union
20
22
  import redis
21
23
  from mdbq.log import mylogger
@@ -32,6 +34,45 @@ logger = mylogger.MyLogger(
32
34
  )
33
35
 
34
36
 
37
+ class MySQLDataEncoder(json.JSONEncoder):
38
+ """自定义JSON编码器,支持MySQL常见数据类型"""
39
+ def default(self, obj):
40
+ try:
41
+ if isinstance(obj, datetime):
42
+ return obj.isoformat()
43
+ elif isinstance(obj, date):
44
+ return obj.isoformat()
45
+ elif isinstance(obj, Decimal):
46
+ # Decimal转换为字符串保持精度
47
+ return str(obj)
48
+ elif isinstance(obj, UUID):
49
+ return str(obj)
50
+ elif isinstance(obj, bytes):
51
+ # 二进制数据转换为base64
52
+ import base64
53
+ return base64.b64encode(obj).decode('utf-8')
54
+ elif isinstance(obj, (set, frozenset)):
55
+ # 集合类型转换为列表
56
+ return list(obj)
57
+ elif hasattr(obj, 'isoformat'):
58
+ # 其他日期时间类型
59
+ return obj.isoformat()
60
+ elif hasattr(obj, '__float__'):
61
+ # 数值类型
62
+ return float(obj)
63
+ elif hasattr(obj, '__str__'):
64
+ # 其他有字符串表示的对象
65
+ return str(obj)
66
+ elif hasattr(obj, '__dict__'):
67
+ # 处理其他对象,转换为字典
68
+ return obj.__dict__
69
+ except Exception as e:
70
+ # 如果所有方法都失败,返回对象的字符串表示
71
+ return f"<{type(obj).__name__}: {str(obj)[:100]}>"
72
+
73
+ return super().default(obj)
74
+
75
+
35
76
  class CacheConfig:
36
77
  """缓存系统配置类"""
37
78
 
@@ -258,7 +299,7 @@ class SmartCacheSystem:
258
299
 
259
300
  # 序列化值
260
301
  if isinstance(value, (dict, list, tuple)):
261
- serialized_value = json.dumps(value, ensure_ascii=False)
302
+ serialized_value = json.dumps(value, ensure_ascii=False, sort_keys=True, cls=MySQLDataEncoder)
262
303
  else:
263
304
  serialized_value = str(value)
264
305
 
@@ -471,7 +512,7 @@ class SmartCacheSystem:
471
512
  stats_data['ops_per_second'],
472
513
  stats_data['unique_keys_count'],
473
514
  stats_data['uptime_seconds'],
474
- json.dumps(stats_data['hot_keys'], ensure_ascii=False),
515
+ json.dumps(stats_data['hot_keys'], ensure_ascii=False, cls=MySQLDataEncoder),
475
516
  socket.gethostname(),
476
517
  self.instance_name
477
518
  ))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: mdbq
3
- Version: 4.0.108
3
+ Version: 4.0.110
4
4
  Home-page: https://pypi.org/project/mdbq
5
5
  Author: xigua,
6
6
  Author-email: 2587125111@qq.com
@@ -1 +0,0 @@
1
- VERSION = '4.0.108'
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
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
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes