python3定时执行脚本,python定时任务的实现方式
在我们的日常工作中,经常会用到需要定期执行的任务。下面这篇文章主要介绍用Python脚本实现定时任务的最佳方式。通过示例代码详细介绍,有需要的朋友可以参考一下。
00-1010前言问题描述解决方案摘要
目录
在日常工作中,经常需要周期性地执行一些任务。常见的方式是使用Linux系统自带的crond,结合命令行。但是最近,它遇到了一个大问题。
前言
包含cx_Oracle的python文件可以使用python命令直接在linux下运行,但是设置crontab计划任务会报告以下错误:
cx _甲骨文。数据库错误:
DPI-1047:无法加载64位Oracle客户端库:
libclntsh.so:无法打开共享对象文件:没有这样的文件或目录。
向https://oracle.github.io/odpi/doc/installation.html#linux寻求帮助
时间久了,我找到了问题的根源。原来,crontab进程不会自动加载。执行shell脚本时用户目录中的profile文件,并且不能正常使用自定义环境变量,所以找不到oracle相关的库,并报告了一个错误。
问题描述
直接使用Python脚本实现预定任务的方式有很多:
使用while True: sleep()使用Timeloop库实现定时任务以使用线程运行定时任务。使用内置模块sched实现定时任务的定时器使用调度模块schedule实现定时任务使用任务框架APscheduler实现定时任务使用分布式消息系统Celery实现定时任务使用数据流工具Apache Airflow实现定时任务。给大家展示一个任何同学认为最好的实现方法:使用调度模块Schedule实现定时任务。
导入计划
导入时间
定义作业():
打印(我在工作.)
#每十分钟执行一次任务
schedule . every(10). minutes . do(job)
#每小时执行任务
schedule . every()hour . do(job)
#每天10:30执行任务
schedule . every()day . at( 10:30 )。做(工作)
#每月执行任务
schedule . every()Monday . do(job)。
#每周三1:15执行任务。
schedule.every()星期三. at(13:15 )。做(工作)
#在每分钟的第17秒执行任务
schedule . every()minute . at( :17 )。做(工作)
而True:
schedule.run_pending()
时间.睡眠(1)
可以看到,上面的例子涵盖了从月到秒的配置。
如果您只想运行任务一次,您可以像这样匹配它:
导入计划
导入时间
def job _ that _ executes _ once():
#这里写的任务将只执行一次.
返程时间表。取消作业
schedule . every()day . at( 22:30 )。do(job_that_executes_once)
而True:
schedule.run_pending()
时间.睡眠(1)
如果您有需要传递给作业执行的参数,您可以这样做:
导入计划
def问候语(姓名):
打印(“你好”,姓名)
# do()将额外的参数传递给作业函数
schedule . every(2). seconds . do(greet,name=Alice )
schedule . every(4). seconds . do(greet,name=Bob )
如果您需要让计划任务在特定时间过期,您可以这样做:
导入计划
从日期时间导入日期时间,时间增量,时间
定义作业():
打印(“嘘”)
#每小时运行作业,18336030后停止。
每隔(1)小时安排一次,直到( 18:30 )。做(工作)
#每小时运行作业,今天2030-01-01 18336033
计划每(1)小时,直到( 2030-01-01 18:33 )。做(工作)
#每小时运行一次作业,8小时后停止
schedule . every(1). hours . until(time delta(hours=8))。做(工作)
#每小时运行一次作业,11:32336042后停止。
schedule .每(1)小时.直到(time(11,33,42))。做(工作)
#每小时运行一次作业,2020年5月17日之后停止,11:36:20。
schedule . every(1). hours . until(datetime(2020,5,17,11,36,20))。做(工作)
最近怎么样?是不是特别好用!
解决方案
这就是这篇关于用Python脚本实现定时任务的最佳方式的文章。关于Python实现定时任务的更多信息,请搜索热门IT软件开发工作室之前的文章或者继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。