首页 > 其他分享 >【fastapi】定时任务管理

【fastapi】定时任务管理

时间:2024-06-20 21:59:54浏览次数:24  
标签:Celery Huey fastapi celery APScheduler 任务 task 定时 huey

在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

相关文章

  • 构建高效的大数据量延迟任务调度平台
    目录引言系统需求分析系统架构设计总体架构任务调度模块任务存储模块任务执行模块任务调度算法时间轮算法优先级队列分布式锁数据存储方案关系型数据库NoSQL数据库混合存储方案容错和高可用性主从复制数据备份与恢复故障转移性能优化水平扩展缓存机制异步处理监......
  • 任务调度框架革新:TASKCTL在Docker环境中的高级应用
    Docker:轻量级容器化技术的魅力Docker作为一款开源的轻量级容器化技术,近年来在IT界掀起了一股热潮。它通过封装应用及其运行环境,使得开发者可以快速构建、部署和运行应用。Docker的优势在于其轻量级、可移植性和可扩展性,它使得应用部署变得更加简单、快捷。TASKCTL:自动化运......
  • 基于fastapi+vue登记系统
    1.创建fastapi项目2.创建vue项目npmcreatevue@latestcdwebnpminstallnpminstallelement-plus修改main.js注册elementui和routerimport'./assets/main.css'importAppfrom'./App.vue'import{createApp}from'vue'importrouterfrom......
  • 【JavaEE精炼宝库】多线程(7)定时器
    目录一、定时器的概念二、标准库中的定时器三、自己实现一个定时器3.1MyTimerTask实现:3.2MyTimer实现:一、定时器的概念定时器也是软件开发中的⼀个重要组件。类似于一个"闹钟"。达到一个设定的时间之后,就执行某个指定好的代码(可以用来完成线程池里面的非核心线程......
  • windows下使用bat定时开关windows的一项服务
    原文链接:windows下使用bat定时开关windows的一项服务–每天进步一点点(longkui.site)一个需求要求每天定时开关一项服务。假如这项服务是Redis。那么用什么指令呢?其实很简单,用下方两个指令就可以开关某个服务:netstart服务名netstop服务名我们用管理员方式打开cmd(比......
  • Automa实现的Gmail个人邮箱批量发邮件-带定时功能-实战原创
    文章目录前言一、Gmail个人邮箱批量发邮件是什么?二、操作演示1.工作流全貌2.数据读取3.创建空文件4.写入数据5.切换标签页6.定时功能总结高效办公新技能:使用Automa和Gmail实现定时邮件发送,提升效率!前言Gmail个人邮箱批量发邮件-自定义内容,这个插件之前做的是安......
  • 学习笔记STMF4 TIMER定时器(使用开发板立创天空星STMF4)
    目录                                                #定时器的介绍             #怎么去理解定时器的预分频系数                                        ......
  • Jenkins教程-4-gitlab自动化测试任务构建
    上一小节我们学习了Jenkins构建github自动化测试任务的方法,本小节我们讲解一下公司gitlab自动化测试任务的构建方法。接下来我们以Mac系统为例,讲解一下构建实际自动化测试任务的具体步骤。安装git和gitlab插件点击进入Jenkins插件管理页面安装完插件,http://localhost:8......
  • python爬虫之aiohttp多任务异步爬虫
    python爬虫之aiohttp多任务异步爬虫爬取的flash服务如下:fromflaskimportFlaskimporttimeapp=Flask(__name__)@app.route('/bobo')defindex_bobo():time.sleep(2)return'Hellobobo'@app.route('/jay')defindex_jay():time.......
  • 通过阿里云OOS定时升级EIP实例临时带宽
    功能背景随着业务的不断发展和互联网应用场景的多样化,企业或个人用户在特定时间段内面临网络流量剧增的挑战变得尤为常见。这些流量高峰,如大规模促销活动、热门直播事件、重大新闻发布或季节性数据备份等场景,往往会导致原有带宽瞬间饱和,影响用户体验甚至导致服务短暂不可用。......