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)文章
OpenCV實(shí)戰(zhàn)案例之車道線識(shí)別詳解
計(jì)算機(jī)視覺在自動(dòng)化系統(tǒng)觀測(cè)環(huán)境、預(yù)測(cè)該系統(tǒng)控制器輸入值等方面起著至關(guān)重要的作用,下面這篇文章主要給大家介紹了關(guān)于OpenCV實(shí)戰(zhàn)案例之車道線識(shí)別的相關(guān)資料,需要的朋友可以參考下2022-10-10
python發(fā)送多人郵件沒有展示收件人問題的解決方法
這篇文章主要為大家詳細(xì)介紹了python發(fā)送多人郵件沒有展示收件人問題的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06
Python機(jī)器學(xué)習(xí)之AdaBoost算法
今天帶大家來(lái)學(xué)習(xí)Python機(jī)器學(xué)習(xí),文中對(duì)AdaBoost算法介紹的很詳細(xì),有非常多的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有很好地幫助,需要的朋友可以參考下2021-05-05
PyQT中QTableWidget如何根據(jù)單元格內(nèi)容設(shè)置自動(dòng)寬度
這篇文章主要介紹了PyQT中QTableWidget如何根據(jù)單元格內(nèi)容設(shè)置自動(dòng)寬度問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
Python調(diào)用shell cmd方法代碼示例解析
這篇文章主要介紹了Python調(diào)用shell cmd方法代碼示例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
詳解windows python3.7安裝numpy問題的解決方法
這篇文章主要介紹了windows python3.7安裝numpy問題的解決方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08
利用python爬取m3u8格式視頻的具體實(shí)現(xiàn)
之前爬取的視頻都是mp4格式的,直接用requests請(qǐng)求就可以直接爬取,最近公司安排了一個(gè)小任務(wù),需要爬取m3u8這種格式的視頻,下面這篇文章主要給大家介紹了關(guān)于利用python爬取m3u8格式視頻的相關(guān)資料,需要的朋友可以參考下2022-08-08

