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.
- {mdbq-4.0.108 → mdbq-4.0.110}/PKG-INFO +1 -1
- mdbq-4.0.110/mdbq/__version__.py +1 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/redis/redis_cache.py +44 -3
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq.egg-info/PKG-INFO +1 -1
- mdbq-4.0.108/mdbq/__version__.py +0 -1
- {mdbq-4.0.108 → mdbq-4.0.110}/README.txt +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/__init__.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/auth/__init__.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/auth/auth_backend.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/auth/rate_limiter.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/js/__init__.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/js/jc.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/log/__init__.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/log/mylogger.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/myconf/__init__.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/myconf/myconf.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/mysql/__init__.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/mysql/deduplicator.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/mysql/mysql.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/mysql/s_query.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/mysql/unique_.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/mysql/uploader.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/other/__init__.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/other/download_sku_picture.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/other/error_handler.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/other/otk.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/other/pov_city.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/other/ua_sj.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/pbix/__init__.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/pbix/pbix_refresh.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/pbix/refresh_all.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/redis/__init__.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/redis/getredis.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/route/__init__.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/route/analytics.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/route/monitor.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/route/routes.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/selenium/__init__.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/selenium/get_driver.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq/spider/__init__.py +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq.egg-info/SOURCES.txt +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq.egg-info/dependency_links.txt +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/mdbq.egg-info/top_level.txt +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/setup.cfg +0 -0
- {mdbq-4.0.108 → mdbq-4.0.110}/setup.py +0 -0
|
@@ -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
|
))
|
mdbq-4.0.108/mdbq/__version__.py
DELETED
|
@@ -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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|