python BlockingScheduler定时任务及其他方式的实现


Posted in Python onSeptember 19, 2019

本文介绍了python BlockingScheduler定时任务及其他方式的实现,具体如下:

#BlockingScheduler定时任务
from apscheduler.schedulers.blocking import BlockingScheduler
from datetime import datetime
首先看看周一到周五定时执行任务
# 输出时间
def job():
  print(datetime.now().strtime("%Y-%m-%d %H:%M:%S"))
# BlockingScheduler
scheduler = BlockingScheduler()
scheduler.add_job(job, "cron", day_of_week="1-5", hour=6, minute=30)
schduler.start()


scheduler.add_job(job, 'cron', hour=1, minute=5)
hour =19 , minute =23  这里表示每天的19:23 分执行任务
hour ='19', minute ='23'  这里可以填写数字,也可以填写字符串
hour ='19-21', minute= '23'  表示 19:23、 20:23、 21:23 各执行一次任务

#每300秒执行一次
scheduler .add_job(job, 'interval', seconds=300)

#在1月,3月,5月,7-9月,每天的下午2点,每一分钟执行一次任务
scheduler .add_job(func=job, trigger='cron', month='1,3,5,7-9', day='*', hour='14', minute='*')

# 当前任务会在 6、7、8、11、12 月的第三个周五的 0、1、2、3 点执行
scheduler .add_job(job, 'cron', month='6-8,11-12', day='3rd fri', hour='0-3')

#从开始时间到结束时间,每隔俩小时运行一次
scheduler .add_job(job, 'interval', hours=2, start_date='2018-01-10 09:30:00', end_date='2018-06-15 11:00:00')

#自制定时器
 from datetime import datetime
 import time
 # 每n秒执行一次
 def timer(n):
   while True:
     print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
     time.sleep(n)

timer(5)

Python下实现定时任务的方式有很多种方式。

循环sleep:

这是一种最简单的方式,在循环里放入要执行的任务,然后sleep一段时间再执行。缺点是,不容易控制,而且sleep是个阻塞函数。

def timer(n):
  '''
  每n秒执行一次
  '''
  while True: 
    print time.strftime('%Y-%m-%d %X',time.localtime()) 
    yourTask() # 此处为要执行的任务 
    time.sleep(n)

threading的Timer:

threading模块中的Timer能够帮助实现定时任务,而且是非阻塞的。

比如3秒后打印helloworld:

def printHello():
  print "hello world"
 
 
Timer(3, printHello).start()

比如每3秒打印一次helloworld:

def printHello():
  print "Hello World"
  t = Timer(2, printHello)
  t.start()
 
 
if __name__ == "__main__":
  printHello()

使用sched模块:

sched是一种调度(延时处理机制)。

# -*- coding:utf-8 -*-
# use sched to timing
import time
import os
import sched
 
 
# 初始化sched模块的scheduler类
# 第一个参数是一个可以返回时间戳的函数,第二个参数可以在定时未到达之前阻塞。
schedule = sched.scheduler(time.time, time.sleep)
 
 
# 被周期性调度触发的函数
def execute_command(cmd, inc):
  '''
  终端上显示当前计算机的连接情况
  '''
  os.system(cmd)
  schedule.enter(inc, 0, execute_command, (cmd, inc))
 
 
def main(cmd, inc=60):
  # enter四个参数分别为:间隔事件、优先级(用于同时间到达的两个事件同时执行时定序)、被调用触发的函数,
  # 给该触发函数的参数(tuple形式)
  schedule.enter(0, 0, execute_command, (cmd, inc))
  schedule.run()
 
 
# 每60秒查看下网络连接情况
if __name__ == '__main__':
  main("netstat -an", 60)

使用定时框架APScheduler:

APScheduler是基于Quartz的一个Python定时任务框架。提供了基于日期、固定时间间隔以及crontab类型的任务,并且可以持久化任务。

这个现在还没自己尝试过,等过段时间用了再来补充。

使用windows的定时任务:

这里可以将所需要的Python程序打包成exe文件,然后在windows下设置定时执行。

使用Linux的定时任务(Crontab):

在Linux下可以很方便的借助Crontab来设置和运行定时任务。进入Crontab文件编辑页面,设置时间间隔,使用一些shell命令来运行bash脚本或者是Python脚本,保存后Linux会自动按照设定的时间来定时运行程序。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
儿童学习python的一些小技巧
May 27 Python
python3利用ctypes传入一个字符串类型的列表方法
Feb 12 Python
Python3.5内置模块之random模块用法实例分析
Apr 26 Python
python 使用装饰器并记录log的示例代码
Jul 12 Python
Python中typing模块与类型注解的使用方法
Aug 05 Python
Python学习笔记之文件的读写操作实例分析
Aug 07 Python
Python字节单位转换实例
Dec 05 Python
Python2与Python3的区别详解
Feb 09 Python
利用Tensorboard绘制网络识别准确率和loss曲线实例
Feb 15 Python
一文轻松掌握python语言命名规范规则
Jun 18 Python
详解Django ORM引发的数据库N+1性能问题
Oct 12 Python
python二维图制作的实例代码
Dec 03 Python
python实现简单成绩录入系统
Sep 19 #Python
淘宝秒杀python脚本 扫码登录版
Sep 19 #Python
基于python的selenium两种文件上传操作实现详解
Sep 19 #Python
Python分割训练集和测试集的方法示例
Sep 19 #Python
python Dijkstra算法实现最短路径问题的方法
Sep 19 #Python
PHP统计代码行数的小代码
Sep 19 #Python
Python实现代码统计工具
Sep 19 #Python
You might like
PHP连接MySQL数据的操作要点
2015/03/20 PHP
PHP 的比较运算与逻辑运算详解
2016/05/12 PHP
php array_udiff_assoc 计算两个数组的差集实例
2016/11/12 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
2019/10/21 PHP
基于jquery的loading 加载提示效果实现代码
2011/09/01 Javascript
javascript 手动给表增加数据的小例子
2013/07/10 Javascript
JS判断客户端是手机还是PC的2个代码
2014/04/12 Javascript
jQuery实现的仿百度分页足迹效果代码
2015/10/30 Javascript
JS遍历数组及打印数组实例分析
2016/01/21 Javascript
Javascript之Date对象详解
2016/06/07 Javascript
基于css3新属性transform及原生js实现鼠标拖动3d立方体旋转
2016/06/12 Javascript
JS实现的DIV块来回滚动效果示例
2017/02/07 Javascript
JavaScript实现实时更新系统时间的实例代码
2017/04/04 Javascript
js实现放大镜特效
2017/05/18 Javascript
vue实现表格数据的增删改查
2017/07/10 Javascript
vue中使用cropperjs的方法
2018/03/01 Javascript
python通过exifread模块获得图片exif信息的方法
2015/03/16 Python
Python多线程原理与用法实例剖析
2019/01/22 Python
Scrapy框架爬取Boss直聘网Python职位信息的源码
2019/02/22 Python
Django处理多用户类型的方法介绍
2019/05/18 Python
Python实现病毒仿真器的方法示例(附demo)
2020/02/19 Python
Python MOCK SERVER moco模拟接口测试过程解析
2020/04/13 Python
总经理办公室主任岗位职责
2013/11/12 职场文书
英语专业应届生求职信范文
2013/11/15 职场文书
会计工作心得体会
2014/01/13 职场文书
信访工作者先进事迹
2014/01/17 职场文书
工商治理实习生的自我评价分享
2014/02/20 职场文书
大学军训感言200字
2014/02/26 职场文书
公证书标准格式
2014/04/10 职场文书
旷课检讨书范文
2014/10/30 职场文书
2015年收银工作总结范文
2015/04/01 职场文书
装饰技术负责人岗位职责
2015/04/13 职场文书
大学生十八大感想
2015/08/11 职场文书
关于食品安全的演讲稿范文(三篇)
2019/10/21 职场文书
pytorch 如何使用amp进行混合精度训练
2021/05/24 Python
CSS filter 有什么神奇用途
2021/05/25 HTML / CSS