python celery beat實現(xiàn)定時任務(wù)的示例代碼
在Celery在python中的應(yīng)用除了實現(xiàn)異步任務(wù)(async task
)外也可以執(zhí)行定時任務(wù)(beat
)
1.Celery定時任務(wù)是什么?
Celery默認任務(wù)單元由任務(wù)生產(chǎn)者觸發(fā),但有時可能需要其自動觸發(fā), 而beat
進程正是負責此類任務(wù),能夠自動觸發(fā)定時/周期性任務(wù).
只需要在配置中配置好周期任務(wù),然后在運行一個周期任務(wù)觸發(fā)器(beat)即可
2.直接上代碼
目錄結(jié)構(gòu)如下:
celery_app.py 文件代碼如下:
import os import sys import time import celery from pathlib import Path from datetime import timedelta # 實例化celery對象 app = celery.Celery( "celery_worker", backend="redis://:@127.0.0.1:6379/4", broker="redis://:@127.0.0.1:6379/5", include=[ "celery_worker.email.tasks" ], ) # celery beat 定時任務(wù) beat_schedule = { 'periodic_task-every-minute': { # 'task': 'celery_worker.email.tasks.add', 'task': 'chain.send_chains', 'schedule': timedelta(seconds=10), 'args': (11, 22) }, } # 配置文件 app.conf.update( task_serializer="json", result_serializer="json", accept_content=["json"], task_default_queue="normal", timezone="Asia/Shanghai", enable_utc=False, task_ignore_result=True, redis_max_connections=100, result_expires=3600, beat_schedule=beat_schedule ) """ celery -A celery_worker.celery_app worker -l info celery -A celery_worker.celery_app beat """
email.tasks.py 代碼如下:
from loguru import logger # 模塊化之后 from celery_worker.celery_app import app @app.task(name='chain.send_chains') def add(x, y): logger.info(f'number_add 進來了...x:{x}, y:{y}') return x + y
然后順序啟動 worker 和 beat 定時任務(wù)(記得兩個都必須啟動)
執(zhí)行如下命令:
celery -A celery_worker.celery_app worker -l info (啟動干活的人)
celery -A celery_worker.celery_app beat (啟動定時任務(wù) 類似crontab)
效果如下:
其實簡單的來說就是這點代碼:
beat_schedule = { 'periodic_task-every-minute': { # 'task': 'celery_worker.email.tasks.add', 'task': 'chain.send_chains', 'schedule': timedelta(seconds=10), 'args': (11, 22) }, }
periodic_task-every-minute
這個就是定時任務(wù)的名字 ,隨便起無所謂。
重點是這個 "task"
,經(jīng)過實際測試,如果這個工作函數(shù)沒有指定name
名字的話,默認就是 函數(shù)路徑+函數(shù)名稱
也就是 'celery_worker.email.tasks.add'
。
但是如果這函數(shù)添加name
屬性值的話 直接用名字也是可以的,也就是'chain.send_chains'
。
到此這篇關(guān)于python celery beat實現(xiàn)定時任務(wù)的示例代碼的文章就介紹到這了,更多相關(guān)python celery beat定時任務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Pytorch用Tensorboard來觀察數(shù)據(jù)
這篇文章主要介紹了Pytorch用Tensorboard來觀察數(shù)據(jù),上一篇文章我們講解了關(guān)于Pytorch?Dataset的數(shù)據(jù)處理,這篇我們就來講解觀察數(shù)據(jù),下面具體相關(guān)資料,需要的朋友可以參考一下,希望對你有所幫助2021-12-12Python數(shù)據(jù)分析之使用scikit-learn構(gòu)建模型
這篇文章主要介紹了Python數(shù)據(jù)分析之使用scikit-learn構(gòu)建模型,sklearn提供了model_selection模型選擇模塊、preprocessing數(shù)據(jù)預(yù)處理模塊、decompisition特征分解模塊,更多相關(guān)內(nèi)容需要朋友可以參考下面文章內(nèi)容2022-08-08pandas.dataframe中根據(jù)條件獲取元素所在的位置方法(索引)
今天小編就為大家分享一篇pandas.dataframe中根據(jù)條件獲取元素所在的位置方法(索引),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06Python 實現(xiàn)數(shù)據(jù)結(jié)構(gòu)-堆棧和隊列的操作方法
隊、棧和鏈表一樣,在數(shù)據(jù)結(jié)構(gòu)中非常基礎(chǔ)一種數(shù)據(jù)結(jié)構(gòu),同樣他們也有各種各樣、五花八門的變形和實現(xiàn)方式。這篇文章主要介紹了Python 實現(xiàn)數(shù)據(jù)結(jié)構(gòu)-堆棧和隊列的操作方法,需要的朋友可以參考下2019-07-07