Python中实现定时任务,是用crontab还是有现成的模块可以做?

折腾了几下,学学停停感觉 py 也算过了一次语法,现在想做个小工具来实战。定时任务这块,老司机有什么建议吗?
Python中实现定时任务,是用crontab还是有现成的模块可以做?

4 回复

用现成的模块就行,Python里搞定时任务不用非得去折腾系统的crontab。

最常用的就是scheduleAPScheduler这两个库。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

也可以简单写,不断睡觉检测时间来做定时也可以。

回到顶部