Python?Celery定時(shí)任務(wù)詳細(xì)講解
前言
Celery在python中的應(yīng)用除了實(shí)現(xiàn)異步任務(wù)(async task)外也可以執(zhí)行定時(shí)任務(wù)(beat)
一、Celery定時(shí)任務(wù)是什么?
Celery默認(rèn)任務(wù)單元由任務(wù)生產(chǎn)者觸發(fā),但有時(shí)可能需要其自動(dòng)觸發(fā),而Beat進(jìn)程正是負(fù)責(zé)此類任務(wù),能夠自動(dòng)觸發(fā)定時(shí)/周期性任務(wù).
Celery 進(jìn)行周期任務(wù)也很簡(jiǎn)單,只需要在配置中配置好周期任務(wù),然后在運(yùn)行一個(gè)周期任務(wù)觸發(fā)器(beat)即可,具體網(wǎng)上看
二、使用步驟
win10 + python3 + redis + celery 5
1.代碼結(jié)構(gòu)
celery_config.py配置:
代碼如下(示例):
#-*-coding=utf-8-*- from datetime import timedelta from celery.schedules import crontab # 中間件 BROKER_URL = 'redis://scck2svr03:6379/6' # 結(jié)果存儲(chǔ) # CELERY_RESULT_BACKEND = 'redis://:scck2svr03:6379/5' CELERYD_CONCURRENCY = 20 # 并發(fā)worker數(shù) CELERYD_FORCE_EXECV = True # 非常重要,有些情況下可以防止死鎖 # CELERY_TASK_SERIALIZER = 'msgpack' # 任務(wù)序列化和反序列化使用msgpack方案 CELERY_RESULT_SERIALIZER = 'json' # 讀取任務(wù)結(jié)果一般性能要求不高,所以使用了可讀性更好的JSON CELERY_TASK_RESULT_EXPIRES = 60 * 60 * 24 # celery任務(wù)結(jié)果有效期 CELERY_ACCEPT_CONTENT = ['json', 'msgpack'] # 指定接受的內(nèi)容類型 CELERY_TIMEZONE = 'Asia/Shanghai' # celery使用的時(shí)區(qū) CELERY_ENABLE_UTC = True # 啟動(dòng)時(shí)區(qū)設(shè)置 # 默認(rèn)worker隊(duì)列 #CELERY_DEFAULT_QUEUE = 'default' # 異步任務(wù) CELERY_IMPORTS = ( "celery_learning.email.tasks" ) # celery beat CELERYBEAT_SCHEDULE = { 'periodic_task-every-minute': { 'task': 'celery_learning.email.tasks.add', 'schedule': crontab(minute="*/1"), 'args': (1,2) }, 'periodic_task-every-10second':{ 'task':'celery_learning.email.tasks.add', 'schedule':timedelta(seconds=10), 'args':(1,12) } }
2.啟動(dòng)定時(shí)任務(wù)
代碼如下(示例):
終端1:celery -A celery_learning.celery_app worker -l info -P gevent 終端2:celery -A celery_learning.celery_app beat
終端1
終端2
3.執(zhí)行結(jié)果
兩個(gè)定時(shí)任務(wù),一個(gè)每分鐘執(zhí)行,一個(gè)每10秒執(zhí)行
結(jié)果如下:
總結(jié)
到此這篇關(guān)于Python Celery定時(shí)任務(wù)詳細(xì)講解的文章就介紹到這了,更多相關(guān)Python Celery 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python enumerate函數(shù)遍歷數(shù)據(jù)對(duì)象組合過(guò)程解析
這篇文章主要介紹了Python enumerate函數(shù)遍歷數(shù)據(jù)對(duì)象組合過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12Python時(shí)間管理黑科技之datetime函數(shù)詳解
在Python中,datetime模塊是處理日期和時(shí)間的標(biāo)準(zhǔn)庫(kù),它提供了一系列功能強(qiáng)大的函數(shù)和類,用于處理日期、時(shí)間、時(shí)間間隔等,本文將深入探討datetime模塊的使用方法,感興趣的可以了解下2023-08-08Python3一行代碼實(shí)現(xiàn)圖片文字識(shí)別的示例
本篇文章主要介紹了Python3一行代碼實(shí)現(xiàn)圖片文字識(shí)別的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01Django如何判斷訪問(wèn)來(lái)源是PC端還是手機(jī)端
這篇文章主要介紹了Django如何判斷訪問(wèn)來(lái)源是PC端還是手機(jī)端問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05django之靜態(tài)文件 django 2.0 在網(wǎng)頁(yè)中顯示圖片的例子
今天小編就為大家分享一篇django之靜態(tài)文件 django 2.0 在網(wǎng)頁(yè)中顯示圖片的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07Python語(yǔ)音合成之第三方庫(kù)gTTs/pyttsx3/speech橫評(píng)(內(nèi)附使用方法)
Python是一種非常強(qiáng)大的腳本語(yǔ)言,可以用來(lái)實(shí)現(xiàn)各種復(fù)雜的應(yīng)用,其中之一就是文本轉(zhuǎn)語(yǔ)音,即把文字轉(zhuǎn)換成聲音來(lái)發(fā)出,下面這篇文章主要給大家介紹了關(guān)于Python語(yǔ)音合成之第三方庫(kù)gTTs/pyttsx3/speech橫評(píng)的相關(guān)資料,文中還介紹了詳細(xì)的使用方法,需要的朋友可以參考下2023-05-05Python讀取postgresql數(shù)據(jù)庫(kù)詳情
這篇文章主要介紹了Python讀取postgresql數(shù)據(jù)庫(kù)詳情,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09python批量修改圖片后綴的方法(png到j(luò)pg)
今天小編就為大家分享一篇python批量修改圖片后綴(png到j(luò)pg),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10python中將兩組數(shù)據(jù)放在一起按照某一固定順序shuffle的實(shí)例
今天小編就為大家分享一篇python中將兩組數(shù)據(jù)放在一起按照某一固定順序shuffle的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07