
mher/flowerFlower 是一款基于 Web 的 Celery 集群监控与管理工具。通过直观的 Web 界面和丰富的 API,Flower 提供了对 Celery 任务、工人节点(Worker)及消息代理(Broker)的实时监控与远程控制能力,帮助开发者和运维人员高效管理分布式任务调度系统。
mher/flower启动 Flower 服务,默认监听 5555 端口:
bashdocker run -d -p 5555:5555 --name flower mher/flower
访问 Web 界面:http://localhost:5555
自定义绑定端口(如 5566)和地址(如 0.0.0.0,允许外部访问):
bashdocker run -d -p 5566:5566 mher/flower celery flower --port=5566 --address=0.0.0.0
通过 Celery 参数指定应用路径、Broker URL 等(需放在 celery 命令后、flower 子命令前):
bashdocker run -d -p 5555:5555 mher/flower celery -A proj --broker=amqp://guest:guest@rabbitmq:5672// flower
-A proj:指定 Celery 应用路径为 proj。--broker:指定消息代理 URL(此处连接到名为 rabbitmq 的容器)。通过 --basic-auth 参数配置用户名密码认证(格式:用户名:密码):
bashdocker run -d -p 5555:5555 mher/flower celery flower --basic-auth=admin:secret
与 Celery 应用、RabbitMQ broker 联动的 docker-compose.yml:
yamlversion: '3' services: rabbitmq: image: rabbitmq:3-management ports: - "5672:5672" # Broker 端口 - "***:***" # RabbitMQ 管理界面 celery-app: build: ./your-celery-app # 构建 Celery 应用镜像 depends_on: - rabbitmq command: celery -A proj worker --loglevel=info flower: image: mher/flower depends_on: - celery-app - rabbitmq ports: - "5555:5555" command: celery -A proj --broker=amqp://guest:guest@rabbitmq:5672// flower --port=5555 --address=0.0.0.0
Flower 需通过 Celery 命令启动,格式如下:
bashcelery [celery参数] flower [flower参数]
celery 命令后、flower 子命令前。flower 子命令后。| 参数 | 说明 | 示例 |
|---|---|---|
-A, --app | 指定 Celery 应用路径 | -A proj(应用包路径为 proj) |
-b, --broker | 指定消息代理 URL | --broker=amqp://guest@rabbitmq:5672 |
--result-backend | 指定任务结果存储后端 | --result-backend=redis://redis:6379 |
| 参数 | 说明 | 示例 |
|---|---|---|
--port | 绑定端口(默认 5555) | --port=5566 |
--address | 绑定地址(默认 0.0.0.0) | --address=127.0.0.1 |
--unix-socket | 使用 Unix 套接字而非 TCP 端口 | --unix-socket=/tmp/flower.sock |
--basic-auth | 启用基本认证(用户名:密码) | --basic-auth=admin:secret |
--auth_provider | 启用 OAuth 认证(如 GitHub、Google) | --auth_provider=github --auth_config=oauth.cfg |
--prometheus-port | 暴露 Prometheus 指标的端口 | --prometheus-port=9090 |
oauth.cfg:ini[github] client_id = YOUR_GITHUB_CLIENT_ID client_secret = YOUR_GITHUB_CLIENT_SECRET redirect_uri = http://localhost:5555/login orgs = your-github-org # 限制指定组织成员访问
bashdocker run -d -p 5555:5555 -v $(pwd)/oauth.cfg:/oauth.cfg mher/flower celery flower --auth_provider=github --auth_config=/oauth.cfg
启动时暴露 Prometheus 指标端口,供 Prometheus 采集:
bashdocker run -d -p 5555:5555 -p 9090:9090 mher/flower celery flower --prometheus-port=9090
Prometheus 指标地址:http://localhost:9090/metrics
Flower 提供 HTTP API 和 WebSocket 接口,支持集群管理与实时事件订阅。
bashcurl -X POST http://localhost:5555/api/worker/pool/restart/myworker
(myworker 为工人节点名称)
bashcurl -X POST -d '{"args":[1,2]}' http://localhost:5555/api/task/async-apply/tasks.add
(调用 tasks.add 任务,参数为 [1,2])
bashcurl -X POST -d 'terminate=True' http://localhost:5555/api/task/revoke/8a4da87b-e12b-4547-b89a-e92e4d1f8efd
(终止 ID 为 8a4da87b-e12b-4547-b89a-e92e4d1f8efd 的任务)
订阅任务成功事件:
javascriptvar ws = new WebSocket("ws://localhost:5555/api/task/events/task-succeeded/"); ws.onmessage = function (event) { console.log("任务成功:", event.data); // 输出任务详情 JSON };
Flower 采用 BSD 3-Clause License 许可协议。详细内容参见 LICENSE 文件。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务