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实现图片批量剪切示例
Mar 25 Python
为Python的web框架编写前端模版的教程
Apr 30 Python
Python之时间和日期使用小结
Feb 14 Python
Django上使用数据可视化利器Bokeh解析
Jul 31 Python
Python 通过微信控制实现app定位发送到个人服务器再转发微信服务器接收位置信息
Aug 05 Python
python Django里CSRF 对应策略详解
Aug 05 Python
Django文件上传与下载(FileFlid)
Oct 06 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
Mar 13 Python
Python 读取WAV音频文件 画频谱的实例
Mar 14 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
Jun 15 Python
解决Python 写文件报错TypeError的问题
Oct 23 Python
python+excel接口自动化获取token并作为请求参数进行传参操作
Nov 10 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中的extract的作用分析
2008/04/09 PHP
php提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
2012/03/27 PHP
Yii查询生成器(Query Builder)用法实例教程
2014/09/04 PHP
PHP大文件分割分片上传实现代码
2020/12/09 PHP
TNC vs RR BO3 第一场 2.14
2021/03/10 DOTA
JavaScript高级程序设计 错误处理与调试学习笔记
2011/09/10 Javascript
JQuery 使用attr方法实现下拉列表选中
2014/10/13 Javascript
JSON格式化输出
2014/11/10 Javascript
使用jquery操作session方法分享
2015/01/22 Javascript
JS实现文字掉落效果的方法
2015/05/06 Javascript
基于jquery实现省市区三级联动效果
2015/12/25 Javascript
js实现按钮控制带有停顿效果的图片滚动
2016/08/30 Javascript
JavaScript使用简单正则表达式的数据验证功能示例
2017/01/13 Javascript
JS实现AES加密并与PHP互通的方法分析
2017/04/19 Javascript
Javascript实现信息滚动效果
2017/05/18 Javascript
Windows安装Node.js报错:2503、2502的解决方法
2017/10/25 Javascript
Vue项目中跨域问题解决方案
2018/06/05 Javascript
layUI的验证码功能及校验实例
2019/10/25 Javascript
jQuery实现小火箭返回顶部特效
2020/02/03 jQuery
[32:36]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第二场 12.12
2020/12/16 DOTA
Python数据库的连接实现方法与注意事项
2016/02/27 Python
Python引用类型和值类型的区别与使用解析
2017/10/17 Python
关于Python的一些学习总结
2018/05/25 Python
Jupyter notebook 远程配置及SSL加密教程
2020/04/14 Python
科尔士百货公司官网:Kohl’s
2016/07/11 全球购物
New Balance德国官方网站:购买鞋子和服装
2019/08/31 全球购物
阿迪达斯新加坡官方网站:adidas新加坡
2019/12/06 全球购物
判断单链表中是否存在环
2012/07/16 面试题
linux面试题参考答案(8)
2016/04/19 面试题
力学专业求职信
2014/07/23 职场文书
2014年商场国庆节活动策划方案
2014/09/16 职场文书
钳工实训报告总结
2014/11/04 职场文书
2015年党员发展工作总结
2015/05/13 职场文书
民事纠纷协议书
2016/03/23 职场文书
JavaScript实现贪吃蛇游戏
2021/06/16 Javascript
python机器学习实现oneR算法(以鸢尾data为例)
2022/03/03 Python