mdbq 4.2.13__tar.gz → 4.2.14__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.2.13 → mdbq-4.2.14}/PKG-INFO +1 -1
- mdbq-4.2.14/mdbq/__version__.py +1 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/route/monitor.py +1 -1
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq.egg-info/PKG-INFO +1 -1
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq.egg-info/SOURCES.txt +0 -1
- mdbq-4.2.13/mdbq/__version__.py +0 -1
- mdbq-4.2.13/mdbq/route/monitor_worker.py +0 -152
- {mdbq-4.2.13 → mdbq-4.2.14}/README.txt +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/__init__.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/auth/__init__.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/auth/auth_backend.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/auth/crypto.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/auth/rate_limiter.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/js/__init__.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/js/jc.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/log/__init__.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/log/mylogger.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/myconf/__init__.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/myconf/myconf.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/mysql/__init__.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/mysql/deduplicator.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/mysql/mysql.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/mysql/s_query.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/mysql/unique_.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/mysql/uploader.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/other/__init__.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/other/download_sku_picture.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/other/error_handler.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/other/otk.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/other/pov_city.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/other/ua_sj.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/pbix/__init__.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/pbix/pbix_refresh.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/pbix/refresh_all.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/redis/__init__.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/redis/getredis.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/redis/redis_cache.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/route/__init__.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/route/analytics.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/route/routes.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/selenium/__init__.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/selenium/get_driver.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq/spider/__init__.py +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq.egg-info/dependency_links.txt +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/mdbq.egg-info/top_level.txt +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/setup.cfg +0 -0
- {mdbq-4.2.13 → mdbq-4.2.14}/setup.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
VERSION = '4.2.14'
|
mdbq-4.2.13/mdbq/__version__.py
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
VERSION = '4.2.13'
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
# -*- coding: utf-8 -*-
|
|
3
|
-
"""
|
|
4
|
-
API 监控系统 - 队列消费者进程
|
|
5
|
-
|
|
6
|
-
这是一个单独运行的守护进程,从 Redis 队列中消费监控任务并写入数据库。
|
|
7
|
-
在 uwsgi 多进程环境下,只需运行一个或多个此进程即可处理所有 worker 的监控数据。
|
|
8
|
-
|
|
9
|
-
使用方法:
|
|
10
|
-
python -m mdbq.route.monitor_worker
|
|
11
|
-
|
|
12
|
-
或通过 systemd/supervisor 管理:
|
|
13
|
-
supervisorctl start api_monitor_worker
|
|
14
|
-
"""
|
|
15
|
-
|
|
16
|
-
import os
|
|
17
|
-
import sys
|
|
18
|
-
import time
|
|
19
|
-
import signal
|
|
20
|
-
from typing import Optional
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
class MonitorWorker:
|
|
24
|
-
"""监控任务队列消费者"""
|
|
25
|
-
|
|
26
|
-
def __init__(self, redis_client, database: str = 'api监控系统', pool=None):
|
|
27
|
-
"""
|
|
28
|
-
初始化消费者
|
|
29
|
-
|
|
30
|
-
Args:
|
|
31
|
-
redis_client: Redis 客户端实例
|
|
32
|
-
database: 监控数据库名称
|
|
33
|
-
pool: 数据库连接池(可选)
|
|
34
|
-
"""
|
|
35
|
-
from mdbq.route.monitor import RouteMonitor
|
|
36
|
-
|
|
37
|
-
self.monitor = RouteMonitor(
|
|
38
|
-
database=database,
|
|
39
|
-
pool=pool,
|
|
40
|
-
redis_client=redis_client,
|
|
41
|
-
enable_async=True
|
|
42
|
-
)
|
|
43
|
-
self.running = True
|
|
44
|
-
self.processed_total = 0
|
|
45
|
-
|
|
46
|
-
# 注册信号处理
|
|
47
|
-
signal.signal(signal.SIGINT, self._handle_signal)
|
|
48
|
-
signal.signal(signal.SIGTERM, self._handle_signal)
|
|
49
|
-
|
|
50
|
-
def _handle_signal(self, signum, frame):
|
|
51
|
-
"""处理关闭信号"""
|
|
52
|
-
self.running = False
|
|
53
|
-
|
|
54
|
-
def run(self, batch_size: int = 100, sleep_interval: float = 0.1):
|
|
55
|
-
"""
|
|
56
|
-
运行消费者主循环
|
|
57
|
-
|
|
58
|
-
Args:
|
|
59
|
-
batch_size: 每次处理的最大任务数
|
|
60
|
-
sleep_interval: 队列为空时的休眠间隔(秒)
|
|
61
|
-
"""
|
|
62
|
-
last_log_time = time.time()
|
|
63
|
-
log_interval = 60 # 每60秒输出一次统计
|
|
64
|
-
|
|
65
|
-
try:
|
|
66
|
-
while self.running:
|
|
67
|
-
# 消费一批任务
|
|
68
|
-
processed = self.monitor.consume_queue_tasks(
|
|
69
|
-
batch_size=batch_size,
|
|
70
|
-
timeout=1.0
|
|
71
|
-
)
|
|
72
|
-
|
|
73
|
-
self.processed_total += processed
|
|
74
|
-
|
|
75
|
-
# 定期输出统计信息
|
|
76
|
-
current_time = time.time()
|
|
77
|
-
if current_time - last_log_time >= log_interval:
|
|
78
|
-
last_log_time = current_time
|
|
79
|
-
|
|
80
|
-
# 如果队列为空,短暂休眠
|
|
81
|
-
if processed == 0:
|
|
82
|
-
time.sleep(sleep_interval)
|
|
83
|
-
|
|
84
|
-
except Exception as e:
|
|
85
|
-
pass
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
def create_worker_from_config(config_file: Optional[str] = None):
|
|
89
|
-
"""
|
|
90
|
-
从配置文件创建消费者实例
|
|
91
|
-
|
|
92
|
-
Args:
|
|
93
|
-
config_file: 配置文件路径(可选,默认 ~/spd.txt)
|
|
94
|
-
|
|
95
|
-
Returns:
|
|
96
|
-
MonitorWorker: 消费者实例
|
|
97
|
-
"""
|
|
98
|
-
try:
|
|
99
|
-
import redis
|
|
100
|
-
from mdbq.myconf import myconf
|
|
101
|
-
|
|
102
|
-
# 读取配置
|
|
103
|
-
if config_file is None:
|
|
104
|
-
config_file = os.path.join(os.path.expanduser("~"), 'spd.txt')
|
|
105
|
-
|
|
106
|
-
parser = myconf.ConfigParser()
|
|
107
|
-
redis_password = parser.get_value(
|
|
108
|
-
file_path=config_file,
|
|
109
|
-
section='redis',
|
|
110
|
-
key='password',
|
|
111
|
-
value_type=str
|
|
112
|
-
)
|
|
113
|
-
|
|
114
|
-
# 创建 Redis 客户端
|
|
115
|
-
redis_client = redis.Redis(
|
|
116
|
-
host='127.0.0.1',
|
|
117
|
-
port=6379,
|
|
118
|
-
db=0,
|
|
119
|
-
password=redis_password,
|
|
120
|
-
decode_responses=False,
|
|
121
|
-
socket_timeout=5,
|
|
122
|
-
socket_connect_timeout=3
|
|
123
|
-
)
|
|
124
|
-
|
|
125
|
-
# 创建消费者
|
|
126
|
-
worker = MonitorWorker(
|
|
127
|
-
redis_client=redis_client,
|
|
128
|
-
database='api监控系统'
|
|
129
|
-
)
|
|
130
|
-
|
|
131
|
-
return worker
|
|
132
|
-
|
|
133
|
-
except Exception as e:
|
|
134
|
-
sys.exit(1)
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
def main():
|
|
138
|
-
"""主函数"""
|
|
139
|
-
|
|
140
|
-
# 创建消费者
|
|
141
|
-
worker = create_worker_from_config()
|
|
142
|
-
|
|
143
|
-
# 运行消费者
|
|
144
|
-
worker.run(
|
|
145
|
-
batch_size=100, # 每次处理100个任务
|
|
146
|
-
sleep_interval=0.5 # 队列空时休眠0.5秒
|
|
147
|
-
)
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
if __name__ == '__main__':
|
|
151
|
-
main()
|
|
152
|
-
|
|
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
|