摘要:項目中需要用到定時器和循環(huán)執(zhí)行。運用線程執(zhí)行輪詢操作,也有運用系統(tǒng)的的文章最多,但是太麻煩。和中間人的消息傳輸支持所有特性,但也提供大量其他實驗性方案的支持,包括用進(jìn)行本地開發(fā)。同時也包含了對任務(wù)的控制。后續(xù)有需求在繼續(xù)。
項目中需要用到定時器和循環(huán)執(zhí)行。去網(wǎng)上搜了一下,比較常見的有一下集中。運用Python線程執(zhí)行輪詢操作,也有運用Linux系統(tǒng)的Cron,Celery的文章最多,但是太麻煩??纯淳椭溃?em>Celery 需要一個發(fā)送和接受消息的傳輸者。RabbitMQ 和 Redis 中間人的消息傳輸支持所有特性,但也提供大量其他實驗性方案的支持,包括用 SQLite 進(jìn)行本地開發(fā)。需要用到隊列,對于這點需求簡直就是大材小用。最后找到了比較合適的Flask-APScheduler。
介紹看看 github的flask-apscheduler介紹。
Loads scheduler configuration from Flask configuration.(支持從Flask中加載調(diào)度)
Loads job definitions from Flask configuration.(支持從Flask中加載任務(wù)配置)
Allows to specify the hostname which the scheduler will run on.(允許指定服務(wù)器運行任務(wù))
Provides a REST API to manage the scheduled jobs.(提供Rest接口管理任務(wù))
Provides authentication for the REST API.(提供Rest接口認(rèn)證)
安裝及配置pip install Flask-APScheduler
在Flask配置文件中添加
SCHEDULER_API_ENABLED = True JOBS = [ { "id": "job_1h_data", "func": job_1h_data, "args": "", "trigger": { "type": "cron", "day_of_week": "0-6", "hour": "*", "minute": "1", "second": "0" } }, { "id": "job_announce", "func": exchange_an, "args": "", "trigger": "interval", "seconds": 300 } ]
上面指定了每一小時獲取所有貨幣24h最高位以及交易所公告。
獲取公告def exchange_an(): """ :param start_date: 開始時間 YYYY-MM-DD HH:MM:SS :param end_date: 結(jié)束時間 YYYY-MM-DD HH:MM:SS :return: 推送消息,保持?jǐn)?shù)據(jù)庫 """ current_local = time.time() start_date = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(current_local - 300)) end_date = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(current_local)) announce = pro.query("exchange_ann", start_date=start_date, end_date=end_date) print("請求交易所公告...") for x in announce.values: s = { "title": x[0], "content": x[1], "type": x[2], "url": x[3], "datetime": x[4] } value = json.dumps(s) print(value) mqttClient.publish("system/ex_announce", value)動態(tài)添加任務(wù)
# coding:utf-8 from apscheduler.schedulers.blocking import BlockingScheduler import datetime def aps_test(x): print datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), x scheduler = BlockingScheduler() scheduler.add_job(func=aps_test, args=("定時任務(wù)",), trigger="cron", second="*/5") scheduler.add_job(func=aps_test, args=("一次性任務(wù)",), next_run_time=datetime.datetime.now() + datetime.timedelta(seconds=12)) scheduler.add_job(func=aps_test, args=("循環(huán)任務(wù)",), trigger="interval", seconds=3, id="interval_task") scheduler.start() """ 暫停任務(wù) """ scheduler.pause_job("interval_task") """ 恢復(fù)任務(wù) """ scheduler.resume_job("interval_task") """ 刪除任務(wù) """ scheduler.remove_job("interval_task")
apscheduler支持添加三種方式的任務(wù),分別是定時任務(wù),一次性任務(wù)及循環(huán)任務(wù)。同時也包含了對任務(wù)的控制。
總結(jié)因為是單機版本,所以指定服務(wù)器運行任務(wù),Rest接口管理任務(wù),Rest接口認(rèn)證就不寫了。后續(xù)有需求在繼續(xù)。
歡迎長按下圖 -> 識別圖中二維碼或者微信掃一掃關(guān)注我的公眾號
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/42439.html
摘要:日期觸發(fā)一次性指定日期作業(yè)的運行日期或時間指定時區(qū)運行一次運行一次間隔調(diào)度間隔幾周間隔幾天間隔幾小時間隔幾分鐘間隔多少秒開始日期結(jié)束日期時區(qū)每兩個小時調(diào)一下觸發(fā)年,位數(shù)字月范圍日范圍周范圍周內(nèi)第幾天或者星期幾范圍或者時范圍 Flask Schedule Flask-APScheduler a Flask extension supported for the APScheduler w...
摘要:貢獻(xiàn)者飛龍版本最近總是有人問我,把這些資料看完一遍要用多長時間,如果你一本書一本書看的話,的確要用很長時間。為了方便大家,我就把每本書的章節(jié)拆開,再按照知識點合并,手動整理了這個知識樹。 Special Sponsors showImg(https://segmentfault.com/img/remote/1460000018907426?w=1760&h=200); 貢獻(xiàn)者:飛龍版...
摘要:一步一步學(xué)習(xí)一直都有發(fā)布他開發(fā)的教程。在上有他免費的教程,并且宣稱是世上最深入的系列?;A(chǔ)在上有個非常的視頻教程。的官網(wǎng)教程非常值得你從頭讀到尾。使用框架這是我們最后一個教程的介紹。不過在和已經(jīng)有為你準(zhǔn)備了不錯的免費課程哈 一步一步學(xué)習(xí)Vue 2 (Laracasts) Jeffrey Way一直都有發(fā)布他web開發(fā)的教程。他曾經(jīng)在30天內(nèi)教會了我使用jquery。在Laracast...
摘要:層疊樣式表二修訂版這是對作出的官方說明。速查表兩份表來自一份關(guān)于基礎(chǔ)特性,一份關(guān)于布局。核心第一篇一份來自的基礎(chǔ)參考指南簡寫速查表簡寫形式參考書使用層疊樣式表基礎(chǔ)指南,包含使用的好處介紹個方法快速寫成高質(zhì)量的寫出高效的一些提示。 迄今為止,我已經(jīng)收集了100多個精通CSS的資源,它們能讓你更好地掌握CSS技巧,使你的布局設(shè)計脫穎而出。 CSS3 資源 20個學(xué)習(xí)CSS3的有用資源 C...
摘要:下表整理了目前的版本與版本的兼容關(guān)系還未所以,不論您是在讀我的基礎(chǔ)教程基礎(chǔ)教程還是正在連載的系列教程。 這篇博文是臨時增加出來的內(nèi)容,主要是由于最近連載《Spring Cloud Alibaba基礎(chǔ)教程》系列的時候,碰到讀者咨詢的大量問題中存在一個比較普遍的問題:版本的選擇。其實這類問題,在之前寫Spring Cloud基礎(chǔ)教程的時候,就已經(jīng)發(fā)過一篇《聊聊Spring Cloud版本的...
閱讀 1061·2021-11-22 15:35
閱讀 1698·2021-10-26 09:49
閱讀 3240·2021-09-02 15:11
閱讀 2086·2019-08-30 15:53
閱讀 2642·2019-08-30 15:53
閱讀 2937·2019-08-30 14:11
閱讀 3536·2019-08-30 12:59
閱讀 3248·2019-08-30 12:53