在 Python 生态中,有多种定时任务框架,以下进行简介:
1. APScheduler(Advanced Python Scheduler)
- 特点:灵活性高,支持多种任务存储后端(内存、SQLAlchemy、MongoDB等)
- 调度类型:支持日期、间隔、Cron 表达式三种调度方式
- 适用场景:适合单机应用,也可集成到 Flask、Django 等 Web 框架中
- 示例:
from apscheduler.schedulers.background import BackgroundScheduler
scheduler = BackgroundScheduler()
scheduler.add_job(my_job, 'interval', minutes=30)
scheduler.add_job(another_job, 'cron', hour=3, minute=30)
scheduler.start()
2. Celery
- 特点:分布式任务队列,功能强大,可扩展性好
- 消息代理:支持 RabbitMQ, Redis 等作为消息代理
- 适用场景:大型应用,需要分布式执行的场景,任务复杂度高
- 优势:除定时任务外,还支持异步任务处理
3. Schedule
- 特点:轻量级,API 简单易用
- 适用场景:小型应用,对复杂功能需求不高
- 示例:
import schedule
import time
def job():
print("定时任务执行中...")
schedule.every(10).minutes.do(job)
schedule.every().hour.do(job)
schedule.every().day.at("10:30").do(job)
while True:
schedule.run_pending()
time.sleep(1)
4. Django 内置的 Cron - django-crontab
- 特点:与 Django 集成度高
- 适用场景:Django 项目
5. Airflow
- 特点:工作流自动化平台,适合复杂的 ETL 流程
- 适用场景:数据工程,需要可视化监控和管理的场景
选择建议
- 小型项目:Schedule 或 APScheduler
- Web 应用:APScheduler 或与框架集成的专用库
- 分布式系统:Celery
- 数据处理工作流:Airflow