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中使用正则表达式的连接符示例代码
Oct 10 Python
更换Django默认的模板引擎为jinja2的实现方法
May 28 Python
对python的输出和输出格式详解
Dec 08 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
Feb 21 Python
python实现Virginia无密钥解密
Mar 20 Python
python中的协程深入理解
Jun 10 Python
python django 原生sql 获取数据的例子
Aug 14 Python
python socket通信编程实现文件上传代码实例
Dec 14 Python
Python正则表达式如何匹配中文
May 27 Python
Python实现弹球小游戏
Aug 01 Python
Python-OpenCV实现图像缺陷检测的实例
Jun 11 Python
python神经网络学习 使用Keras进行简单分类
May 04 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
laravel model模型处理之修改查询或修改字段时的类型格式案例
2019/10/17 PHP
一些有关检查数据的JS代码
2006/09/07 Javascript
JavaScript脚本性能优化注意事项
2008/11/18 Javascript
javascript 事件查询综合 推荐收藏
2010/03/10 Javascript
Extjs中使用extend(js继承) 的代码
2012/03/15 Javascript
jquery获取tr中控件值并操作tr实现思路
2013/03/27 Javascript
基于jQuery实现模拟页面加载进度条
2013/04/01 Javascript
javascript中动态加载js文件多种解决办法总结
2013/11/15 Javascript
JavaScript程序员应该知道的45个实用技巧
2014/03/04 Javascript
用JavaScript实现用一个DIV来包装文本元素节点
2014/09/09 Javascript
简单实现js间歇或无缝滚动效果
2016/06/29 Javascript
浅谈jquery中ajax跨域提交的时候会有2次请求的问题
2017/11/10 jQuery
在vue+element ui框架里实现lodash的debounce防抖
2019/11/13 Javascript
详解vue中使用transition和animation的实例代码
2020/12/12 Vue.js
python抓取京东价格分析京东商品价格走势
2014/01/09 Python
python计算N天之后日期的方法
2015/03/31 Python
python+selenium实现163邮箱自动登陆的方法
2017/12/31 Python
详解python字节码
2018/02/07 Python
使用pandas实现连续数据的离散化处理方式(分箱操作)
2019/11/22 Python
python 画图 图例自由定义方式
2020/04/17 Python
构建高效的python requests长连接池详解
2020/05/02 Python
python中Ansible模块的Playbook的具体使用
2020/05/28 Python
python实现感知机模型的示例
2020/09/30 Python
python爬虫看看虎牙女主播中谁最“顶”步骤详解
2020/12/01 Python
20佳惊艳的HTML5应用程序示例分享
2011/05/03 HTML / CSS
全球最大的跑步用品商店:Road Runner Sports
2016/09/11 全球购物
美国复古街头服饰精品店:Need Supply Co.
2017/02/22 全球购物
海外淘书首选:AbeBooks
2017/07/31 全球购物
Shopee越南:东南亚与台湾电商平台
2019/02/03 全球购物
英国汽车零件购物网站:GSF Car Parts
2019/05/23 全球购物
《燕子》教学反思
2014/02/18 职场文书
公共场所禁烟标语
2014/06/25 职场文书
高中生综合素质评价范文
2015/08/18 职场文书
考研经验交流会策划书
2015/11/02 职场文书
python 用递归实现通用爬虫解析器
2021/04/16 Python
MySQL中连接查询和子查询的问题
2021/09/04 MySQL