基于 taskiq 的异步任务队列插件,支持 Worker 和定时任务调度器
- 应用级插件
插件自动读取项目原始任务队列配置,优先使用 TASKIQ_BROKER,否则使用 CELERY_BROKER
# Redis
TASKIQ_BROKER = 'redis' # 或 CELERY_BROKER
REDIS_HOST = 'localhost'
REDIS_PORT = 6379
REDIS_PASSWORD = ''
CELERY_BROKER_REDIS_DATABASE = 0
# RabbitMQ
TASKIQ_BROKER = 'rabbitmq' # 或 CELERY_BROKER
CELERY_RABBITMQ_HOST = 'localhost'
CELERY_RABBITMQ_PORT = 5672
CELERY_RABBITMQ_USERNAME = 'guest'
CELERY_RABBITMQ_PASSWORD = 'guest'
CELERY_RABBITMQ_VHOST = '/'插件目录下 plugin.toml 的 [settings] 中包含以下内容:
[settings]
GRAFANA_TASKIQ_PROMETHEUS_SERVER_ADDR = '0.0.0.0'
GRAFANA_TASKIQ_PROMETHEUS_SERVER_PORT = 9000在 backend/core/conf.py 中保留插件配置声明:
##################################################
# [ Plugin ] task
##################################################
# 基础配置(in plugin.toml)
GRAFANA_TASKIQ_PROMETHEUS_SERVER_ADDR: str
GRAFANA_TASKIQ_PROMETHEUS_SERVER_PORT: int-
安装并启用插件后,重启后端服务
-
自 fba v1.13.3 起,插件安装后会自动应用;旧版本需手动将
hooks.py中的 lifespan 添加到backend/core/registrar.py::register_init中 -
使用以下命令启动 Worker:
taskiq worker backend.plugin.task.broker:taskiq_broker backend.plugin.task.tasks.beat -fsd -tp backend/plugin/task/**/tasks.py -
如需定时任务,使用以下命令启动调度器:
taskiq scheduler backend.plugin.task.scheduler:taskiq_scheduler backend.plugin.task.tasks.beat
- 卸载插件前,先停止 Worker 和 Scheduler
- 卸载插件后,清理业务中的任务调用和队列配置
- 作者:
wu-clan - 反馈方式:提交 Issue 或 PR