Dockerfile 部署
This commit is contained in:
@@ -118,15 +118,33 @@ def background_sync_job():
|
||||
finally:
|
||||
release_browser()
|
||||
|
||||
# 初始化定时调度器
|
||||
scheduler = BackgroundScheduler()
|
||||
scheduler.add_job(func=background_sync_job, trigger="interval", minutes=30)
|
||||
# 启动调度器
|
||||
scheduler.start()
|
||||
def should_start_scheduler():
|
||||
"""
|
||||
控制定时任务是否启用。
|
||||
浏览器自动化服务若运行在多 worker 场景,必须避免每个 worker 都起一份调度器。
|
||||
"""
|
||||
return os.getenv("ENABLE_BACKGROUND_SCHEDULER", "1") == "1"
|
||||
|
||||
|
||||
scheduler = None
|
||||
if should_start_scheduler():
|
||||
scheduler = BackgroundScheduler()
|
||||
scheduler.add_job(func=background_sync_job, trigger="interval", minutes=30)
|
||||
scheduler.start()
|
||||
print("[调度器] APScheduler 已启动。")
|
||||
else:
|
||||
print("[调度器] 已按环境变量禁用后台定时任务。")
|
||||
|
||||
# 确保在应用退出时关闭调度器
|
||||
import atexit
|
||||
atexit.register(lambda: scheduler.shutdown())
|
||||
|
||||
|
||||
def shutdown_scheduler():
|
||||
if scheduler and scheduler.running:
|
||||
scheduler.shutdown()
|
||||
|
||||
|
||||
atexit.register(shutdown_scheduler)
|
||||
|
||||
def get_db_connection():
|
||||
"""获取数据库连接"""
|
||||
@@ -1281,4 +1299,4 @@ if __name__ == '__main__':
|
||||
port=port,
|
||||
threaded=True,
|
||||
use_reloader=False
|
||||
)
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user