update watchlist

This commit is contained in:
2025-12-16 14:48:40 +08:00
parent a25d8c365b
commit 8727e4dbaf
9 changed files with 160 additions and 16 deletions

58
app.py
View File

@@ -11682,19 +11682,51 @@ def initialize_event_polling():
print(f'[轮询] 只会推送 ID > {max(current_redis_max, db_max_id)} 的新事件')
print(f'[轮询] ========== 初始化完成 ==========\n')
# 创建后台调度器
scheduler = BackgroundScheduler()
# 每 30 秒执行一次轮询
scheduler.add_job(
func=poll_new_events,
trigger='interval',
seconds=30,
id='poll_new_events',
name='检查新事件并推送',
replace_existing=True
)
scheduler.start()
print(f'[轮询] 调度器已启动 (PID: {os.getpid()}),每 30 秒检查一次新事件')
# 检测是否在 eventlet 环境下运行
is_eventlet = False
try:
import eventlet
# 检查 eventlet 是否已经 monkey patch
if hasattr(eventlet, 'patcher') and eventlet.patcher.is_monkey_patched('socket'):
is_eventlet = True
except ImportError:
pass
if is_eventlet:
# Eventlet 环境:使用 eventlet 的协程定时器
print(f'[轮询] 检测到 Eventlet 环境,使用 eventlet 协程调度器')
def eventlet_polling_loop():
"""Eventlet 兼容的轮询循环"""
import eventlet
while True:
try:
eventlet.sleep(30) # 等待 30 秒
poll_new_events()
except Exception as e:
print(f'[轮询 ERROR] Eventlet 轮询循环出错: {e}')
import traceback
traceback.print_exc()
eventlet.sleep(30) # 出错后等待 30 秒再继续
# 启动 eventlet 协程
eventlet.spawn(eventlet_polling_loop)
print(f'[轮询] Eventlet 协程调度器已启动 (PID: {os.getpid()}),每 30 秒检查一次新事件')
else:
# 非 Eventlet 环境:使用 APScheduler
print(f'[轮询] 使用 APScheduler BackgroundScheduler')
scheduler = BackgroundScheduler()
# 每 30 秒执行一次轮询
scheduler.add_job(
func=poll_new_events,
trigger='interval',
seconds=30,
id='poll_new_events',
name='检查新事件并推送',
replace_existing=True
)
scheduler.start()
print(f'[轮询] APScheduler 调度器已启动 (PID: {os.getpid()}),每 30 秒检查一次新事件')
_polling_initialized = True