python3定时执行脚本,python定时任务的实现方式

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: