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 相关文章推荐
使用setup.py安装python包和卸载python包的方法
Nov 27 Python
python判断一个集合是否包含了另外一个集合中所有项的方法
Jun 30 Python
Python 实现购物商城,含有用户入口和商家入口的示例
Sep 15 Python
对Tensorflow中权值和feature map的可视化详解
Jun 14 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
Dec 05 Python
Python设计模式之组合模式原理与用法实例分析
Jan 11 Python
在python 不同时区之间的差值与转换方法
Jan 14 Python
在PyCharm中控制台输出日志分层级分颜色显示的方法
Jul 11 Python
如何使用Python抓取网页tag操作
Feb 14 Python
Python selenium模块实现定位过程解析
Jul 09 Python
python如何导出微信公众号文章方法详解
Aug 31 Python
Python基础之pandas数据合并
Apr 27 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
Zerg兵种介绍
2020/03/14 星际争霸
PHILIPS D1835/D1875的电路分析与打理
2021/03/02 无线电
WordPress中使主题支持小工具以及添加插件启用函数
2015/12/22 PHP
PHP获取网站中各文章的第一张图片的代码示例
2016/05/20 PHP
用JavaScript将从数据库中读取出来的日期型格式化为想要的类型。
2009/08/15 Javascript
通过JS 获取Mouse Position(鼠标坐标)的代码
2009/09/21 Javascript
js下关于onmouseout、事件冒泡的问题经验小结
2010/12/09 Javascript
js三种排序算法分享
2012/08/16 Javascript
javascript中的onkeyup和onkeydown区别介绍
2013/04/28 Javascript
使用jquery修改表单的提交地址基本思路
2014/06/04 Javascript
BootStrap文件上传样式超好看【持续更新】
2016/05/10 Javascript
confirm确认对话框的实现方法总结
2016/06/17 Javascript
全面总结Javascript对数组对象的各种操作
2017/01/22 Javascript
nodejs处理图片的中间件node-images详解
2017/05/08 NodeJs
JS实现自动轮播图效果(自适应屏幕宽度+手机触屏滑动)
2017/06/19 Javascript
javascript设计模式之迭代器模式
2020/01/30 Javascript
微信小程序中data-key属性之数据传输(经验总结)
2020/08/22 Javascript
快速解决安装python没有scripts文件夹的问题
2018/04/03 Python
python dataframe astype 字段类型转换方法
2018/04/11 Python
matplotlib 输出保存指定尺寸的图片方法
2018/05/24 Python
Python实用库 PrettyTable 学习笔记
2019/08/06 Python
Python-numpy实现灰度图像的分块和合并方式
2020/01/09 Python
Python+OpenCV实现将图像转换为二进制格式
2020/01/09 Python
python用Tkinter做自己的中文代码编辑器
2020/09/07 Python
CSS3效果:自定义“W”形运行轨迹实例
2017/03/29 HTML / CSS
HTML5 Canvas之测试浏览器是否支持Canvas的方法
2015/01/01 HTML / CSS
商务英语专业自荐信
2013/10/14 职场文书
财务支持类个人的自我评价
2014/02/14 职场文书
数学检讨书1000字
2014/02/24 职场文书
酒店员工培训方案
2014/06/02 职场文书
计算机应用专业毕业生求职信
2014/06/03 职场文书
2015年派出所民警工作总结
2015/04/24 职场文书
廉洁自律承诺书范文
2015/04/28 职场文书
创业计划书之服装
2019/10/07 职场文书
如何利用 CSS Overview 面板重构优化你的网站
2021/10/24 HTML / CSS
tomcat下部署jenkins的方法
2022/05/06 Servers