Files
task-executer/run_flower.py
2025-12-09 22:01:27 +08:00

50 lines
1.8 KiB
Python

#!/usr/bin/env python3
"""启动Flower监控服务"""
import os
import sys
import subprocess
from celery_app import app
from celery_config import FLOWER_CONFIG
def start_flower():
"""启动Flower监控"""
print("启动Flower监控服务...")
print(f"监控地址: http://localhost:{FLOWER_CONFIG['port']}")
print("按 Ctrl+C 停止服务")
try:
# 使用celery_app中的app对象启动flower
app.worker_main(['flower',
'--broker', app.conf.broker_url,
'--port', str(FLOWER_CONFIG['port']),
'--address', FLOWER_CONFIG['address'],
'--inspect_timeout', str(FLOWER_CONFIG['inspect_timeout']),
'--purge_offline_workers', str(FLOWER_CONFIG['purge_offline_workers']),
'--enable_events',
'true' if FLOWER_CONFIG['enable_events'] else 'false'])
except KeyboardInterrupt:
print("\nFlower监控服务已停止")
except Exception as e:
print(f"启动Flower失败: {e}")
print("请检查:")
print("1. Redis是否正在运行 (redis-server)")
print("2. 端口5555是否被占用")
print("3. Celery worker是否正在运行")
def start_flower_simple():
"""简单启动方式"""
print("尝试简单启动Flower...")
try:
# 使用celery_app中的app对象简单启动
app.worker_main(['flower', '--broker=redis://localhost:6379/0', '--port=5555', '--address=127.0.0.1'])
except Exception as e:
print(f"简单启动失败: {e}")
if __name__ == '__main__':
# 先尝试正常启动
try:
start_flower()
except Exception as e:
print(f"正常启动失败: {e}")
print("尝试简单启动...")
start_flower_simple()