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字)
1831 1
|
12月前
|
存储 运维 Cloud Native
Apache Doris 与 ClickHouse:运维与开源闭源对比
Doris 与 ClickHouse 各有优势,但在运维效率、集群自动化能力、故障恢复机制以及开源治理模型方面,Doris 展现出了更成熟、更开放、更面向云原生架构的产品能力。对于希望构建可控、弹性、高可用分析平台的团队而言,Doris 提供了一个更具确定性和长期价值的选择。而 ClickHouse 仍是极具性能优势的分析引擎,但其闭源方向的转变可能需要用户在技术与商业之间做出更谨慎的权衡。
1366 9
Apache Doris 与 ClickHouse:运维与开源闭源对比
|
9月前
|
存储 关系型数据库 数据库
Flask中定义类使用Sqlalchemy时,mapped_column详细讲解
本文详解 SQLAlchemy 2.0 中 `mapped_column` 的用法,介绍其语法结构、常用参数(如 `nullable`、`default`、`server_default`、`onupdate` 等),并通过 DIFY 的 Account 模型实例解析字段定义逻辑,对比数据库列与运行时字段的区别,帮助理解 ORM 映射机制。
762 3
|
12月前
|
缓存 异构计算
LLM 内存需求计算方式
GPU上大语言模型的内存主要由模型权重和KV缓存构成。70亿参数模型以16位精度加载时,权重占约14GB;KV缓存则随批大小和序列长度线性增长,显著影响显存使用,限制推理吞吐与长上下文处理。
1201 11
|
存储 消息中间件 调度
Django+Celery 进阶:动态定时任务的添加、修改与智能调度实战
Celery Beat 是 Celery 的定时任务调度组件,支持固定间隔、CRON 表达式等规则,可实现任务的周期性执行。本文详解了其原理、配置方式、与 Django 的集成步骤及实战代码示例,适用于构建具备定时任务管理功能的后台系统。
1049 0
|
调度 数据库 Python
python中APScheduler的使用详解(python3经典编程案例)
文章详细讲解了在Python中使用APScheduler来安排和执行定时任务的方法,包括不同调度器的配置与使用场景。
1168 1
|
XML JSON API
LangChain之各个输出解析器的使用
输出解析器负责获取 LLM 的输出并将其转换为更合适的格式。借助LangChain的输出解析器重构程序,使模型能够生成结构化回应,并可以直接解析这些回应。
883 1
|
Linux 调度 数据库
Django使用django-apscheduler实现定时任务
【7月更文挑战第8天】定时任务可以在后台定时执行指定的代码,避免了很多人为操作。下面是在Django项目中如何使用定时任务的具体操作流程
1565 1
|
机器学习/深度学习 存储 算法
技术好文:ttf文件结构解析
技术好文:ttf文件结构解析
1518 0