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 相关文章推荐
linux系统使用python获取cpu信息脚本分享
Jan 15 Python
python基础教程之python消息摘要算法使用示例
Feb 10 Python
python实现自动更换ip的方法
May 05 Python
JSON文件及Python对JSON文件的读写操作
Oct 07 Python
Python父目录、子目录的相互调用方法
Feb 16 Python
python从入门到精通 windows安装python图文教程
May 18 Python
python的pygal模块绘制反正切函数图像方法
Jul 16 Python
Django使用消息提示简单的弹出个对话框实例
Nov 15 Python
使用pyecharts1.7进行简单的可视化大全
May 17 Python
在tensorflow下利用plt画论文中loss,acc等曲线图实例
Jun 15 Python
详解Python中的路径问题
Sep 02 Python
如何利用python 读取配置文件
Jan 06 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防注入漏洞过滤函数代码
2012/04/11 PHP
php中使用preg_replace函数匹配图片并加上链接的方法
2013/02/06 PHP
PHP中feof()函数实例测试
2014/08/23 PHP
php中使用gd库实现下载网页中所有图片
2015/05/12 PHP
html+js实现动态显示本地时间
2013/09/21 Javascript
js实现文本框中焦点在最后位置
2014/03/04 Javascript
jquery 为a标签绑定click事件示例代码
2014/06/23 Javascript
AngularJs表单校验功能实例代码
2017/02/09 Javascript
js指定步长实现单方向匀速运动
2017/07/17 Javascript
vue 的点击事件获取当前点击的元素方法
2018/09/15 Javascript
JS addEventListener()和attachEvent()方法实现注册事件
2021/01/11 Javascript
使用cx_freeze把python打包exe示例
2014/01/24 Python
Python smallseg分词用法实例分析
2015/05/28 Python
Python中的推导式使用详解
2015/06/03 Python
Python3实现的简单验证码识别功能示例
2018/05/02 Python
Python求离散序列导数的示例
2019/07/10 Python
python实现简单聊天室功能 可以私聊
2019/07/12 Python
Django获取应用下的所有models的例子
2019/08/30 Python
nginx+uwsgi+django环境搭建的方法步骤
2019/11/25 Python
Python使用socketServer包搭建简易服务器过程详解
2020/06/12 Python
Python如何读写字节数据
2020/08/05 Python
如何在Python3中使用telnetlib模块连接网络设备
2020/09/21 Python
利用python批量爬取百度任意类别的图片的实现方法
2020/10/07 Python
Bibloo奥地利:购买女装、男装、童装、鞋和配件
2018/10/18 全球购物
求高于平均分的学生学号及成绩
2016/09/01 面试题
理货员的岗位职责
2013/11/23 职场文书
公司请假条格式
2014/04/11 职场文书
银行求职自荐信
2014/06/30 职场文书
健康状况证明书
2014/11/26 职场文书
2015年考研复习计划
2015/01/19 职场文书
审美与表现自我评价
2015/03/09 职场文书
高中生社会实践心得体会
2016/01/14 职场文书
《小小的船》教学反思
2016/02/18 职场文书
《爬天都峰》教学反思
2016/02/23 职场文书
解析CSS 提取图片主题色功能(小技巧)
2021/05/12 HTML / CSS
总结Python连接CS2000的详细步骤
2021/06/23 Python