定时任务
实现定时任务的方法有很多,接下来我们针对各种方法对比下优缺点。
sched模块实现了一个时间调度程序,该程序可以通过单线程执行来处理按照时间尺度进行调度的时间。
通过调用scheduler.enter(delay,priority,func,args)函数,可以将一个任务添加到任务队列里面,当指定的时间到了,就会执行任务(func函数)。
执行结果为:
按顺序执行任务:
执行结果为:
s.run()会阻塞当前线程的执行
可以用
也可以用s.cancal(action)来取消sched中的某个action
APScheduler有四种组件:
示例2、
示例3、
示例4、
运行结果为:
示例5、
运行结果:
示例6、
示例7、
缺点: 遇到问题排查时比较困难。
精讲见celery
优点: 基于Redis的作业队列工具,优先选择APScheduler定时框架。小而精。
缺点: 没有定时执行的功能。
后续精讲持续更新中。。。
可以将所需要的Python程序打包成exe文件,然后在windows下设置定时执行。
常见:
Windows 任务计划程序
Windows Service
SQL Agent 的 Job
优点: 可以管理和调度多个任务,可以进行控制。
缺点: 阻塞式函数
优点: 不需要程序自己维护定时器,不占用程序的资源。
缺点: 不太灵活,crontab因为是操作系统的命令,独立于程序运行,所以也就是在程序还没有运行的时候,就已经确定了有哪些定时任务需要执行,并东提前交代给了Linux系统,如果程序运行当中,发现有新的定时任务需求,想要让程序自动交代给crontab一个新的定时任务,并不是很方便。
语法
或
说明
参数说明