在FastApi框架搭建的WBE系统中如何实现定时任务的管理?
Python中常见的定时任务框架包括Celery、APScheduler和Huey。以下是每个框架的简单对比和示例代码。
1.Celery: 分布式任务队列,适合处理长时间运行的任务。
# 安装celery
# pip install celery
# celery_task.py
from celery import Celery
app = Celery('tasks', broker='redis://localhost:6379/0')
@app.task
def add(x, y):
return x + y
# 使用
# celery -A celery_task worker -l info
# 执行任务
# result = add.delay(4, 4)
2.APScheduler: 定时任务调度,内置多种触发器。
# 安装apscheduler
# pip install apscheduler
from apscheduler.schedulers.blocking import BlockingScheduler
def my_job():
print("执行任务...")
scheduler = BlockingScheduler()
scheduler.add_job(my_job, 'interval', seconds=5) # 每5秒执行一次
scheduler.start()
3.Huey: 轻量级的任务队列,使用Redis作为数据存储。
# 安装huey
# pip install huey
from huey import Huey
huey = Huey('my_app')
@huey.task()
def task_a():
print('Task A is running')
# 使用
if __name__ == '__main__':
huey.run()
# 或者在生产环境中使用huey.poll()
Celery适合处理长任务,需要消息队列和分布式的场景;Huey轻量但需要其他Redis做存储。
所以我们选择APScheduler集成到我们的web系统中。
环境配置
pip install apscheduler fastapi[all]
APScheduler的基本组件
APScheduler 有四种组件,分别是:调度器(scheduler),作业存储(job store),触发器(trigger),执行器(executor)。
这里有个注意事项,很多博主都没讲的地方,在Web项目中集成APScheduler,调度器不能选择BlockingScheduler,这样会阻塞WEB系统的进程,导致定时框架启动而,web系统无法运行。
不多说直接上干货:
定时框架基础配置
from pytz import timezone
from a
标签:Celery,Huey,fastapi,celery,APScheduler,任务,task,定时,huey
From: https://blog.csdn.net/qq_42874996/article/details/139843258