Python中实现定时任务,是用crontab还是有现成的模块可以做?
折腾了几下,学学停停感觉 py 也算过了一次语法,现在想做个小工具来实战。定时任务这块,老司机有什么建议吗?
Python中实现定时任务,是用crontab还是有现成的模块可以做?
4 回复
celery
用现成的模块就行,Python里搞定时任务不用非得去折腾系统的crontab。
最常用的就是schedule和APScheduler这两个库。schedule的语法特别简单直观,适合快速上手和小型项目。比如你想每隔10秒打印个时间,代码就这么写:
import schedule
import time
def job():
print(f"任务执行了: {time.strftime('%H:%M:%S')}")
# 每隔10秒执行一次
schedule.every(10).seconds.do(job)
while True:
schedule.run_pending()
time.sleep(1)
APScheduler就更强大了,功能全面,支持固定时间、间隔、cron表达式各种触发方式,还能持久化任务和分布式部署,适合用在正经的生产环境里。下面是个用cron表达式的例子:
from apscheduler.schedulers.blocking import BlockingScheduler
def job():
print("定时任务执行!")
scheduler = BlockingScheduler()
# 每天上午10:30执行
scheduler.add_job(job, 'cron', hour=10, minute=30)
scheduler.start()
简单需求用schedule,复杂项目用APScheduler,别去碰crontab了。
总结:用APScheduler或schedule模块更Pythonic。
apscheduler
也可以简单写,不断睡觉检测时间来做定时也可以。

