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模拟登录百度贴吧(百度贴吧登录)实例
Dec 18 Python
Python 序列的方法总结
Oct 18 Python
python编写微信远程控制电脑的程序
Jan 05 Python
django认证系统实现自定义权限管理的方法
Jul 16 Python
python利用插值法对折线进行平滑曲线处理
Dec 25 Python
python用opencv批量截取图像指定区域的方法
Jan 24 Python
详解小白之KMP算法及python实现
Apr 04 Python
python使用装饰器作日志处理的方法
Jul 11 Python
Python 合并多个TXT文件并统计词频的实现
Aug 23 Python
python 读写文件包含多种编码格式的解决方式
Dec 20 Python
Python文件时间操作步骤代码详解
Apr 13 Python
详解解Django 多对多表关系的三种创建方式
Aug 23 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 session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
2009/11/27 PHP
PHP array_push 数组函数
2009/12/26 PHP
记录mysql性能查询过程的使用方法
2013/05/02 PHP
PHP关联数组实现根据元素值删除元素的方法
2015/06/26 PHP
PHP 读取文本文件内容并分页显示
2016/01/02 PHP
PHP用户注册邮件激活账户的实现代码
2017/05/31 PHP
php中try catch捕获异常实例详解
2020/08/06 PHP
Alliance vs AM BO3 第一场2.13
2021/03/10 DOTA
greybox——不开新窗口看新的网页
2007/02/20 Javascript
JavaScript 图片预览效果 推荐
2009/12/22 Javascript
juqery 学习之三 选择器 可见性 元素属性
2010/11/25 Javascript
js设置cookie过期及清除浏览器对应名称的cookie
2013/10/24 Javascript
跟我学习javascript的prototype原型和原型链
2015/11/18 Javascript
基于jQuery实现音乐播放试听列表
2016/04/14 Javascript
详解Node.js模块间共享数据库连接的方法
2016/05/24 Javascript
bootstrap-table.js扩展分页工具栏(增加跳转到xx页)功能
2017/12/28 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
2018/05/04 Javascript
vue.js实现h5机器人聊天(测试版)
2020/07/16 Javascript
[52:41]OG vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/20 DOTA
Python对HTML转义字符进行反转义的实现方法
2019/04/28 Python
基于Python实现签到脚本过程解析
2019/10/25 Python
Django如何在不停机的情况下创建索引
2020/08/02 Python
python 利用opencv实现图像网络传输
2020/11/12 Python
html5 postMessage前端跨域并前端监听的方法示例
2018/11/01 HTML / CSS
Michael Kors美国官网:美式奢侈生活风格的代表
2016/11/25 全球购物
毕业生就业自荐书
2013/12/15 职场文书
建筑人员岗位职责
2013/12/25 职场文书
党校培训思想汇报
2014/01/03 职场文书
人力资源管理专业自荐书范文
2014/02/10 职场文书
出纳员岗位责任制
2014/02/11 职场文书
2014年党支部学习材料
2014/05/19 职场文书
乡镇党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
社区三八妇女节活动总结
2015/02/06 职场文书
传单、海报早OUT了,另类传单营销方案送给你!
2019/07/15 职场文书
导游词之沈阳清昭陵
2019/12/28 职场文书
全网非常详细的pytest配置文件
2022/07/15 Python