基于 Postgres 的 Python 持久化后台工作流库,任务可在服务重启或崩溃后恢复,无需额外基础设施。
agronholm/apscheduler
Python 任务调度与任务队列库,支持 Cron、间隔、日历和一次性等多种触发方式。
- Star
- 7,688
- Fork
- 823
- 未关闭 Issue
- 82
- 最近提交
- 12天前
这是什么?
APScheduler(Advanced Python Scheduler)是一个用于按计划运行 Python 函数或以任务队列方式处理作业的库。它既可以在单进程的小型脚本中使用,也可以跨多个节点部署,让多个调度器和工作进程共享同一个数据存储。
它同时提供同步和异步两种版本,既适用于基于线程的应用,也适用于 asyncio 或 Trio 应用。调度计划和作业可以持久化到 PostgreSQL、MySQL、SQLite 或 MongoDB 中,因此在进程或节点重启后不会丢失,并能在多个实例之间共享。在需要多个调度器或工作进程协同时,可使用 PostgreSQL、Redis 或 MQTT 作为事件代理。
内置触发器支持 Cron 风格、固定间隔、日历式(每隔 X 年、月、周或天在同一时刻运行)和一次性执行。触发器可以组合,也可以自定义;作业还可以限制并发数量、允许的最大延迟启动时间,并添加随机抖动。
核心功能
- 01支持 Cron、固定间隔、日历式和一次性触发器,并可自定义触发器
- 02作业可持久化到 PostgreSQL、MySQL、SQLite 或 MongoDB
- 03可通过 PostgreSQL、Redis 或 MQTT 事件代理在多个调度器和工作进程之间协同
- 04同时提供同步以及 asyncio、Trio 异步接口
- 05支持限制同一任务的并发数、最大延迟启动时间,并可添加随机抖动
适用场景
- 在 Python Web 应用中运行周期性后台任务
- 借助共享数据库,在多台服务器上调度定期的数据同步或清理任务
- 在不需要独立任务队列时,将其用作轻量级作业队列
- 在 ASGI 或 WSGI 应用中触发 asyncio 或 Trio 任务
使用前须知
- v4.0 系列为预发布版本,可能会有不兼容的变更且没有迁移路径,不应用于生产环境。
标签
常见问题
- apscheduler 是什么?
- Python 任务调度与任务队列库,支持 Cron、间隔、日历和一次性等多种触发方式。 APScheduler(Advanced Python Scheduler)是一个用于按计划运行 Python 函数或以任务队列方式处理作业的库。它既可以在单进程的小型脚本中使用,也可以跨多个节点部署,让多个调度器和工作进程共享同一个数据存储。
- apscheduler 可以免费使用吗?用的什么许可证?
- apscheduler 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- apscheduler 还在维护吗?
- 活跃维护中。apscheduler 最近一次提交是在 2026年10月26日。
- apscheduler 适合用来做什么?
- 在 Python Web 应用中运行周期性后台任务 借助共享数据库,在多台服务器上调度定期的数据同步或清理任务 在不需要独立任务队列时,将其用作轻量级作业队列 在 ASGI 或 WSGI 应用中触发 asyncio 或 Trio 任务
- 在哪里获取 apscheduler?
- 源代码和安装说明在 GitHub 上:https://github.com/agronholm/apscheduler
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
875RustMIT更新于 13小时前
分布式任务调度平台,提供 Web 管理界面,支持 Cron 触发、分片广播、故障转移与失败重试。
3.1万+13 本周1.1万JavaGPL-3.0维护活跃更新于 29天前
面向 Python 的分布式任务队列,用于在多个工作进程和消息代理之间执行后台任务与定时任务。
2.9万+31 本周5257PythonOther维护活跃更新于 前天
基于 Redis 的 Go 分布式任务队列库,支持定时任务、失败重试和优先级队列。
1.4万+12 本周991GoMIT更新于 19天前
面向后台任务、AI 智能体和持久化工作流的编排引擎,支持 Python、TypeScript、Go 和 Ruby。
8235+30 本周535GoMIT维护活跃更新于 17小时前
基于 Java 的分布式任务调度框架,支持 CRON、定时、延时及 MapReduce 类分布式计算任务。
7811+5 本周1385JavaApache-2.0更新于 上个月