Skip to content

fastapi-practices/task

Repository files navigation

Task

基于 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

使用方式

  1. 安装并启用插件后,重启后端服务

  2. 自 fba v1.13.3 起,插件安装后会自动应用;旧版本需手动将 hooks.py 中的 lifespan 添加到 backend/core/registrar.py::register_init

  3. 使用以下命令启动 Worker:

    taskiq worker backend.plugin.task.broker:taskiq_broker backend.plugin.task.tasks.beat -fsd -tp backend/plugin/task/**/tasks.py
  4. 如需定时任务,使用以下命令启动调度器:

    taskiq scheduler backend.plugin.task.scheduler:taskiq_scheduler backend.plugin.task.tasks.beat

卸载说明

  • 卸载插件前,先停止 Worker 和 Scheduler
  • 卸载插件后,清理业务中的任务调用和队列配置

联系方式

  • 作者:wu-clan
  • 反馈方式:提交 Issue 或 PR

About

FastAPI Best Architecture taskiq plugin

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages