python创建定时任务

一个很常见的需求,在某天的固定时刻,需要执行某个python脚本来完成特定的任务,面对这样需求,你可能想到的最简单的实现方法是在程序里使用while循环,每次循环使用time.sleep(1),等时间来到规定的时间点就执行某个函数来完成任务,这样的方法可行么?当然可以,只不过太丑陋了。

在linux系统下,你可以使用crontab命令设置定时任务,不多这个命令对于初学者来说用起来不那么简单直观,本文推荐你使用定时任框架APScheduler

pip install apscheduler

该框架的接口定义十分友好,比如你希望你的爬虫函数run_spider 在每天的10点15分能够准时启动,那么你的代码可以写成下面的样子

from apscheduler.schedulers.blocking import BlockingScheduler

def run_spider():
    print("启动爬虫")


sched = BlockingScheduler()
sched.add_job(run_spider, 'cron', hour=10, minute=15)
sched.start()

在add_job方法里,关于时间的设置,可以参考 CronTrigger类的初始化函数

如果你希望自己的爬虫每3分钟就执行一次爬取,那么你可以将代码写成下面的样子

from apscheduler.schedulers.blocking import BlockingScheduler

def run_spider():
    print("启动爬虫")


sched = BlockingScheduler()
sched.add_job(run_spider, 'interval', minutes=3)
sched.start()

关于时间的设置,可以参考IntervalTrigger类的初始化函数

掌握上面两种定时任务设置方法,搞定绝大多数定时任务已经绰绰有余了

扫描关注, 与我技术互动

QQ交流群: 211426309

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案