Python基于Fastapi与APScheduler的应用定时任务

简介: 基于FastAPI与APScheduler实现定时任务调度,通过lifespan管理生命周期,每分钟执行一次反馈任务,结合Uvicorn启动服务,构建高效异步任务处理系统。

依赖包

APScheduler==3.11.0
fastapi==0.119.0
uvicorn==0.37.0

调度与任务

from contextlib import asynccontextmanager
from datetime import datetime
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from apscheduler.triggers.interval import IntervalTrigger
from fastapi import FastAPI
from logger import logger

@asynccontextmanager
async def lifespan(app: FastAPI):
    # 初始化调度器
    scheduler = AsyncIOScheduler()
    # 添加定时任务,每分钟执行一次
    scheduler.add_job(
        feedback_task,
        trigger=IntervalTrigger(minutes=1),
        id="feedback_task",
        replace_existing=True
    )
    # 启动调度器
    scheduler.start()
    logger.info("APScheduler定时器已启动")
    # 应用运行期间
    yield
    # 关闭逻辑
    scheduler.shutdown()
    logger.info("APScheduler定时器已关闭")

async def feedback_task():
    logger.info(f"feedback_task start : {datetime.now()}")

FastAPI启动

import uvicorn

from fastapi import FastAPI
from route import HealthRouter
from utils.ScheduleTask import lifespan

app = FastAPI(lifespan=lifespan)
app.include_router(HealthRouter.router)

if __name__ == '__main__':
    # 启动服务
    uvicorn.run(app, host="0.0.0.0", port=8000)


相关文章
|
存储 Java 调度
Python定时任务实战:APScheduler从入门到精通
APScheduler是Python强大的定时任务框架,通过触发器、执行器、任务存储和调度器四大组件,灵活实现各类周期性任务。支持内存、数据库、Redis等持久化存储,适用于Web集成、数据抓取、邮件发送等场景,解决传统sleep循环的诸多缺陷,助力构建稳定可靠的自动化系统。(238字)
1878 1
|
10月前
|
存储 关系型数据库 数据库
Flask中定义类使用Sqlalchemy时,mapped_column详细讲解
本文详解 SQLAlchemy 2.0 中 `mapped_column` 的用法,介绍其语法结构、常用参数(如 `nullable`、`default`、`server_default`、`onupdate` 等),并通过 DIFY 的 Account 模型实例解析字段定义逻辑,对比数据库列与运行时字段的区别,帮助理解 ORM 映射机制。
815 3
|
人工智能 安全 API
最近谈论 SSE 和 WebSocket 的人越来越多的原因
实时通信已经成了大模型应用的标配。
2910 274
最近谈论 SSE 和 WebSocket 的人越来越多的原因
|
存储 消息中间件 调度
Django+Celery 进阶:动态定时任务的添加、修改与智能调度实战
Celery Beat 是 Celery 的定时任务调度组件,支持固定间隔、CRON 表达式等规则,可实现任务的周期性执行。本文详解了其原理、配置方式、与 Django 的集成步骤及实战代码示例,适用于构建具备定时任务管理功能的后台系统。
1072 0
|
调度 数据库 Python
python中APScheduler的使用详解(python3经典编程案例)
文章详细讲解了在Python中使用APScheduler来安排和执行定时任务的方法,包括不同调度器的配置与使用场景。
1184 1
|
XML JSON API
LangChain之各个输出解析器的使用
输出解析器负责获取 LLM 的输出并将其转换为更合适的格式。借助LangChain的输出解析器重构程序,使模型能够生成结构化回应,并可以直接解析这些回应。
902 1
|
Linux 调度 数据库
Django使用django-apscheduler实现定时任务
【7月更文挑战第8天】定时任务可以在后台定时执行指定的代码,避免了很多人为操作。下面是在Django项目中如何使用定时任务的具体操作流程
1578 1
|
机器学习/深度学习 存储 算法
技术好文:ttf文件结构解析
技术好文:ttf文件结构解析
1565 0

热门文章

最新文章