mdbq 4.0.109__py3-none-any.whl → 4.0.110__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.
Potentially problematic release.
This version of mdbq might be problematic. Click here for more details.
- mdbq/__version__.py +1 -1
- mdbq/redis/redis_cache.py +39 -8
- {mdbq-4.0.109.dist-info → mdbq-4.0.110.dist-info}/METADATA +1 -1
- {mdbq-4.0.109.dist-info → mdbq-4.0.110.dist-info}/RECORD +6 -6
- {mdbq-4.0.109.dist-info → mdbq-4.0.110.dist-info}/WHEEL +0 -0
- {mdbq-4.0.109.dist-info → mdbq-4.0.110.dist-info}/top_level.txt +0 -0
mdbq/__version__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
VERSION = '4.0.
|
|
1
|
+
VERSION = '4.0.110'
|
mdbq/redis/redis_cache.py
CHANGED
|
@@ -16,6 +16,8 @@ import time
|
|
|
16
16
|
import threading
|
|
17
17
|
import socket
|
|
18
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,13 +34,42 @@ logger = mylogger.MyLogger(
|
|
|
32
34
|
)
|
|
33
35
|
|
|
34
36
|
|
|
35
|
-
class
|
|
36
|
-
"""自定义JSON编码器,支持
|
|
37
|
+
class MySQLDataEncoder(json.JSONEncoder):
|
|
38
|
+
"""自定义JSON编码器,支持MySQL常见数据类型"""
|
|
37
39
|
def default(self, obj):
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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
|
+
|
|
42
73
|
return super().default(obj)
|
|
43
74
|
|
|
44
75
|
|
|
@@ -268,7 +299,7 @@ class SmartCacheSystem:
|
|
|
268
299
|
|
|
269
300
|
# 序列化值
|
|
270
301
|
if isinstance(value, (dict, list, tuple)):
|
|
271
|
-
serialized_value = json.dumps(value, ensure_ascii=False, sort_keys=True, cls=
|
|
302
|
+
serialized_value = json.dumps(value, ensure_ascii=False, sort_keys=True, cls=MySQLDataEncoder)
|
|
272
303
|
else:
|
|
273
304
|
serialized_value = str(value)
|
|
274
305
|
|
|
@@ -481,7 +512,7 @@ class SmartCacheSystem:
|
|
|
481
512
|
stats_data['ops_per_second'],
|
|
482
513
|
stats_data['unique_keys_count'],
|
|
483
514
|
stats_data['uptime_seconds'],
|
|
484
|
-
json.dumps(stats_data['hot_keys'], ensure_ascii=False, cls=
|
|
515
|
+
json.dumps(stats_data['hot_keys'], ensure_ascii=False, cls=MySQLDataEncoder),
|
|
485
516
|
socket.gethostname(),
|
|
486
517
|
self.instance_name
|
|
487
518
|
))
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
mdbq/__init__.py,sha256=Il5Q9ATdX8yXqVxtP_nYqUhExzxPC_qk_WXQ_4h0exg,16
|
|
2
|
-
mdbq/__version__.py,sha256=
|
|
2
|
+
mdbq/__version__.py,sha256=iklgoo0dwUOPXd5UdfLVLjIut4R-avmlkGfuFD8UJGs,19
|
|
3
3
|
mdbq/auth/__init__.py,sha256=pnPMAt63sh1B6kEvmutUuro46zVf2v2YDAG7q-jV_To,24
|
|
4
4
|
mdbq/auth/auth_backend.py,sha256=ZxKRXPXa2t9ngRZEXKM72MzcMvN-0OtiVDOhZRTrm3w,85948
|
|
5
5
|
mdbq/auth/rate_limiter.py,sha256=1m_Paxp8pDNpmyoFGRpFMVOJpbmeIvfVcfiQ2oH72qM,32850
|
|
@@ -26,7 +26,7 @@ mdbq/pbix/pbix_refresh.py,sha256=JUjKW3bNEyoMVfVfo77UhguvS5AWkixvVhDbw4_MHco,239
|
|
|
26
26
|
mdbq/pbix/refresh_all.py,sha256=OBT9EewSZ0aRS9vL_FflVn74d4l2G00wzHiikCC4TC0,5926
|
|
27
27
|
mdbq/redis/__init__.py,sha256=YtgBlVSMDphtpwYX248wGge1x-Ex_mMufz4-8W0XRmA,12
|
|
28
28
|
mdbq/redis/getredis.py,sha256=vpBuNc22uj9Vr-_Dh25_wpwWM1e-072EAAIBdB_IpL0,23494
|
|
29
|
-
mdbq/redis/redis_cache.py,sha256=
|
|
29
|
+
mdbq/redis/redis_cache.py,sha256=vu0eJ063iXngm_C1h6NAkaYS69PSDT7gjjJed006hIc,27044
|
|
30
30
|
mdbq/route/__init__.py,sha256=BT_dAY7V-U2o72bevq1B9Mq9QA7GodwtkxyLNdGaoE8,22
|
|
31
31
|
mdbq/route/analytics.py,sha256=dngj5hVwKddEUy59nSYbOoJ9C7OVrtCmCkvW6Uj9RYM,28097
|
|
32
32
|
mdbq/route/monitor.py,sha256=7gLyeq7TqnbhPwhUw0dg-hw9-0OWeKoMdMhcANSDGVs,42255
|
|
@@ -34,7 +34,7 @@ mdbq/route/routes.py,sha256=QVGfTvDgu0CpcKCvk1ra74H8uojgqTLUav1fnVAqLEA,29433
|
|
|
34
34
|
mdbq/selenium/__init__.py,sha256=AKzeEceqZyvqn2dEDoJSzDQnbuENkJSHAlbHAD0u0ZI,10
|
|
35
35
|
mdbq/selenium/get_driver.py,sha256=1NTlVUE6QsyjTrVVVqTO2LOnYf578ccFWlWnvIXGtic,20903
|
|
36
36
|
mdbq/spider/__init__.py,sha256=RBMFXGy_jd1HXZhngB2T2XTvJqki8P_Fr-pBcwijnew,18
|
|
37
|
-
mdbq-4.0.
|
|
38
|
-
mdbq-4.0.
|
|
39
|
-
mdbq-4.0.
|
|
40
|
-
mdbq-4.0.
|
|
37
|
+
mdbq-4.0.110.dist-info/METADATA,sha256=SExR69CN7vO5WwGP6xGeE6HxE5Uw-VoB2CFoUs0hZu8,365
|
|
38
|
+
mdbq-4.0.110.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
|
|
39
|
+
mdbq-4.0.110.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
|
|
40
|
+
mdbq-4.0.110.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|