admin 管理员组文章数量: 1184232
写后端的同学们可能都知道,工作中可能需要周期性执行一些任务,俗称定时任务。Linux环境下,可以借助于系统自带的crontab完成定时任务。但是很多时候,开发的同学们可能并没有权限去操作crontab,所以就催生了一些不太好的解决方案,比如基于Python/Java里面的Timer去弄一个周期性执行的工具。
大佬们,醒醒,主角出场了。今天给大家分享一个Python轻量级定时任务解决方案,schedule,可以满足常用的周期性任务需求。
安装
pip install schedule
使用
schedule提供了多种方法去描述执行周期,比如:
#1,按照某个时间间隔
every(10).seconds.do(task),表示每隔10秒执行task任务。当然可以把间隔换成其他单位,比如minutes,hours,days
#2,按照一个固定的时间点
every().day.at('9:30').do(task),表示每天9:30执行任务
#encoding=utf-8
from datetime importdatetimeimporttimeimportscheduledef job1(*args):
with open('tasks', 'a') as f:
f.write('[{}]{}\n'.format(datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f'), 'msg'))#每隔5秒执行一次job1
schedule.every(5).seconds.do(job1)#每天9:30执行任务
schedule.every().day.at('09:30').do(job1)if __name__ == '__main__':whileTrue:
schedule.run_pending()
time.sleep(1)
效果
如何让任务只执行一次?
只需要在任务最后加上这句话就行,return schedule.CancelJob
#encoding=utf-8
from datetime importdatetimeimporttimeimportscheduledef job_run_once(*args):print('Job run only once')# returnschedule.CancelJob#只执行一次任务
schedule.every(3).seconds.do(job_run_once)if __name__ == '__main__':whileTrue:
schedule.run_pending()
time.sleep(1)
就是这么简单,你学会了吗?
版权声明:本文标题:python schedule at,Python定时任务轻量解决方案---Schedule 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1766276767a3450743.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论