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 爬虫图片简单实现
Jun 01 Python
Python基于Matplotlib库简单绘制折线图的方法示例
Aug 14 Python
Python3实现简单可学习的手写体识别(实例讲解)
Oct 21 Python
win8下python3.4安装和环境配置图文教程
Jul 31 Python
详解Numpy中的广播原则/机制
Sep 20 Python
python+mysql实现学生信息查询系统
Feb 21 Python
Python进度条的制作代码实例
Aug 31 Python
Python中的list与tuple集合区别解析
Oct 12 Python
pytorch 自定义参数不更新方式
Jan 06 Python
Python实现新型冠状病毒传播模型及预测代码实例
Feb 05 Python
详解Pycharm出现out of memory的终极解决方法
Mar 03 Python
python 实现"神经衰弱"翻牌游戏
Nov 09 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 基础教程(四)
2006/10/09 PHP
php读取mysql的简单实例
2014/01/15 PHP
PHP中的命名空间相关概念浅析
2015/01/22 PHP
PHP数据对象映射模式实例分析
2019/03/29 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
说明你的Javascript技术很烂的五个原因
2011/04/26 Javascript
用原生JavaScript实现jQuery的$.getJSON的解决方法
2013/05/03 Javascript
JS/jQuery实现默认显示部分文字点击按钮显示全部内容
2013/05/13 Javascript
js判断上传文件类型判断FileUpload文件类型代码
2014/05/20 Javascript
运行Node.js的IIS扩展iisnode安装配置笔记
2015/03/02 Javascript
浅谈jquery中delegate()与live()
2015/06/22 Javascript
深入浅析AngularJS中的module(模块)
2016/01/04 Javascript
nodejs实现发出蜂鸣声音(系统报警声)的方法
2017/01/18 NodeJs
jQuery+CSS3实现点赞功能
2017/03/13 Javascript
微信小程序 动态传参实例详解
2017/04/27 Javascript
JS 设置Cookie 有效期 检测cookie
2017/06/15 Javascript
聊聊那些使用前端Javascript实现的机器学习类库
2017/09/18 Javascript
Python中函数的参数定义和可变参数用法实例分析
2015/06/04 Python
详解python OpenCV学习笔记之直方图均衡化
2018/02/08 Python
Python人工智能之路 之PyAudio 实现录音 自动化交互实现问答
2019/08/13 Python
Python获取一个用户名的组ID过程解析
2019/09/03 Python
Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例
2019/09/29 Python
pycharm软件实现设置自动保存操作
2020/06/08 Python
纯DOM+CSS3实现简单的小风车动画
2016/09/27 HTML / CSS
html5使用canvas绘制太阳系效果
2014/12/15 HTML / CSS
前端水印的简单实现代码示例
2020/12/02 HTML / CSS
西铁城美国官方网站:Citizen Watch美国
2019/11/08 全球购物
夜大毕业生自我评价分享
2013/11/10 职场文书
财务工作个人求职的自我评价
2013/12/19 职场文书
校园广播稿500字
2014/02/04 职场文书
民族团结好少年事迹材料
2014/08/19 职场文书
教师党员批评与自我批评
2014/10/15 职场文书
总账会计岗位职责
2015/04/02 职场文书
合同纠纷调解书
2015/05/20 职场文书
歌咏比赛主持词
2015/06/29 职场文书
详解MongoDB排序时内存大小限制与创建索引的注意事项
2022/05/06 MongoDB