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)


相关文章
|
7月前
|
存储 Java 调度
Python定时任务实战:APScheduler从入门到精通
APScheduler是Python强大的定时任务框架,通过触发器、执行器、任务存储和调度器四大组件,灵活实现各类周期性任务。支持内存、数据库、Redis等持久化存储,适用于Web集成、数据抓取、邮件发送等场景,解决传统sleep循环的诸多缺陷,助力构建稳定可靠的自动化系统。(238字)
1253 1
|
7月前
|
缓存 异构计算
LLM 内存需求计算方式
GPU上大语言模型的内存主要由模型权重和KV缓存构成。70亿参数模型以16位精度加载时,权重占约14GB;KV缓存则随批大小和序列长度线性增长,显著影响显存使用,限制推理吞吐与长上下文处理。
685 11
|
10月前
|
SQL 人工智能 数据挖掘
Apache Doris + MCP:Agent 时代的实时数据分析底座
数据不再是静态的存储对象,而是流动的智能资源;数据库不再是单纯的存储系统,而是智能化的服务平台。Apache Doris 以其在 AI 方向的深度布局和技术创新,正在成为连接数据与智能的重要桥梁。
1777 0
Apache Doris + MCP:Agent 时代的实时数据分析底座
|
10月前
|
存储 消息中间件 调度
Django+Celery 进阶:动态定时任务的添加、修改与智能调度实战
Celery Beat 是 Celery 的定时任务调度组件,支持固定间隔、CRON 表达式等规则,可实现任务的周期性执行。本文详解了其原理、配置方式、与 Django 的集成步骤及实战代码示例,适用于构建具备定时任务管理功能的后台系统。
823 0
|
XML JSON API
LangChain之各个输出解析器的使用
输出解析器负责获取 LLM 的输出并将其转换为更合适的格式。借助LangChain的输出解析器重构程序,使模型能够生成结构化回应,并可以直接解析这些回应。
687 1
|
Linux 调度 数据库
Django使用django-apscheduler实现定时任务
【7月更文挑战第8天】定时任务可以在后台定时执行指定的代码,避免了很多人为操作。下面是在Django项目中如何使用定时任务的具体操作流程
1444 1
|
机器学习/深度学习 存储 算法
技术好文:ttf文件结构解析
技术好文:ttf文件结构解析
1173 0
|
API 开发者 Python
FastAPI系列 4 -路由管理APIRouter
本文是FastAPI系列教程的第四部分,介绍了如何使用APIRouter进行路由管理,通过示例展示了将应用程序功能拆分到不同的模块和文件中,创建用户和书籍的API路由,以及在FastAPI主应用中包含这些路由的方法,并提供了运行结果和API交互文档的截图。
|
XML 开发框架 Java
springboot和springcloud有哪些区别?
springboot和springcloud区别有: 1、含义不同;2、作用不同;3、使用方式不同;4、特征不同;5、注释不同;6、优势不同;7、组件不同;8、设计目的不同。 其中,含义不同指的是springboot是一个快速开发框架,而SpringCloud是建立在SpringBoot上的服务框架。
3221 4