python BlockingScheduler定時任務及其他方式的實現(xiàn)
本文介紹了python BlockingScheduler定時任務及其他方式的實現(xiàn),具體如下:
#BlockingScheduler定時任務
from apscheduler.schedulers.blocking import BlockingScheduler
from datetime import datetime
首先看看周一到周五定時執(zhí)行任務
# 輸出時間
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 分執(zhí)行任務
hour ='19', minute ='23' 這里可以填寫數(shù)字,也可以填寫字符串
hour ='19-21', minute= '23' 表示 19:23、 20:23、 21:23 各執(zhí)行一次任務
#每300秒執(zhí)行一次
scheduler .add_job(job, 'interval', seconds=300)
#在1月,3月,5月,7-9月,每天的下午2點,每一分鐘執(zhí)行一次任務
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 點執(zhí)行
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秒執(zhí)行一次
def timer(n):
while True:
print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
time.sleep(n)
timer(5)
Python下實現(xiàn)定時任務的方式有很多種方式。
循環(huán)sleep:
這是一種最簡單的方式,在循環(huán)里放入要執(zhí)行的任務,然后sleep一段時間再執(zhí)行。缺點是,不容易控制,而且sleep是個阻塞函數(shù)。
def timer(n):
'''
每n秒執(zhí)行一次
'''
while True:
print time.strftime('%Y-%m-%d %X',time.localtime())
yourTask() # 此處為要執(zhí)行的任務
time.sleep(n)
threading的Timer:
threading模塊中的Timer能夠幫助實現(xiàn)定時任務,而且是非阻塞的。
比如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是一種調(diào)度(延時處理機制)。
# -*- coding:utf-8 -*-
# use sched to timing
import time
import os
import sched
# 初始化sched模塊的scheduler類
# 第一個參數(shù)是一個可以返回時間戳的函數(shù),第二個參數(shù)可以在定時未到達之前阻塞。
schedule = sched.scheduler(time.time, time.sleep)
# 被周期性調(diào)度觸發(fā)的函數(shù)
def execute_command(cmd, inc):
'''
終端上顯示當前計算機的連接情況
'''
os.system(cmd)
schedule.enter(inc, 0, execute_command, (cmd, inc))
def main(cmd, inc=60):
# enter四個參數(shù)分別為:間隔事件、優(yōu)先級(用于同時間到達的兩個事件同時執(zhí)行時定序)、被調(diào)用觸發(fā)的函數(shù),
# 給該觸發(fā)函數(shù)的參數(shù)(tuple形式)
schedule.enter(0, 0, execute_command, (cmd, inc))
schedule.run()
# 每60秒查看下網(wǎng)絡連接情況
if __name__ == '__main__':
main("netstat -an", 60)
使用定時框架APScheduler:
APScheduler是基于Quartz的一個Python定時任務框架。提供了基于日期、固定時間間隔以及crontab類型的任務,并且可以持久化任務。
這個現(xiàn)在還沒自己嘗試過,等過段時間用了再來補充。
使用windows的定時任務:
這里可以將所需要的Python程序打包成exe文件,然后在windows下設置定時執(zhí)行。
使用Linux的定時任務(Crontab):
在Linux下可以很方便的借助Crontab來設置和運行定時任務。進入Crontab文件編輯頁面,設置時間間隔,使用一些shell命令來運行bash腳本或者是Python腳本,保存后Linux會自動按照設定的時間來定時運行程序。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Django框架使用內(nèi)置方法實現(xiàn)登錄功能詳解
這篇文章主要介紹了Django框架使用內(nèi)置方法實現(xiàn)登錄功能,結合實例形式詳細分析了Django框架內(nèi)置方法實現(xiàn)登錄功能的相關操作技巧與使用注意事項,需要的朋友可以參考下2019-06-06
PyCharm License Activation激活碼失效問題的解決方法(圖文詳解)
這篇文章主要介紹了PyCharm License Activation激活碼失效問題的解決方法,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03
python實現(xiàn)在內(nèi)存中讀寫str和二進制數(shù)據(jù)代碼
這篇文章主要介紹了python實現(xiàn)在內(nèi)存中讀寫str和二進制數(shù)據(jù)代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
python爬蟲URL重試機制的實現(xiàn)方法(python2.7以及python3.5)
今天小編就為大家分享一篇python爬蟲URL重試機制的實現(xiàn)方法(python2.7以及python3.5),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12
python通過yield實現(xiàn)數(shù)組全排列的方法
這篇文章主要介紹了python通過yield實現(xiàn)數(shù)組全排列的方法,實例分析了全排列的概念及yield實現(xiàn)的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03

