优化flower启动代码

This commit is contained in:
mark.tian
2025-12-09 19:09:29 +08:00
parent 0af7eebed8
commit 38787b1e4e
7 changed files with 224 additions and 20 deletions

View File

@@ -1,25 +1,50 @@
#!/usr/bin/env python3
"""启动Flower监控服务"""
from celery import Celery
from flower import command as flower_command
import os
import sys
import subprocess
from celery_app import app
from flower_config import FLOWER_CONFIG
def start_flower():
"""启动Flower监控"""
print("启动Flower监控服务...")
print("监控地址: http://localhost:5555")
print(f"监控地址: http://localhost:{FLOWER_CONFIG['port']}")
print("按 Ctrl+C 停止服务")
# Flower配置
flower_options = {
'broker': 'redis://localhost:6379/0',
'port': 5555,
'basic_auth': None, # 可以设置用户名:密码,如 'admin:password'
'inspect_timeout': 1000,
'purge_offline_workers': 60,
}
# 启动Flower
flower_command.flower_command(flower_options)
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__':
start_flower()
# 先尝试正常启动
try:
start_flower()
except Exception as e:
print(f"正常启动失败: {e}")
print("尝试简单启动...")
start_flower_simple()