#!/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()