celery非同步分散式框架使用二(定時任務)
阿新 • • 發佈:2022-02-11
一、簡介
celery beat
是一個排程程式;它定期啟動任務,然後由叢集中的可用節點執行任務。
預設情況下會從配置中的 beat_schedule
項中獲取條目(entries),但是也可以使用自定義儲存,例如將entries儲存在SQL資料庫中。
二、配置定時任務
在這裡貼一下專案檔案,避免不是從上一篇部落格過來的小夥伴
定時任務比較方便,只需要在配置檔案中進行配置
1、celeryconfig.py 配置檔案:
# coding=utf-8 from celery.schedules import crontab broker_url= 'redis://127.0.0.1:6379/0' # redis 儲存傳送端來的任務佇列 result_backed = 'redis://127.0.0.1:6379/1' # 用redis儲存執行端執行得到結果 timezone = 'Asia/Shanghai' # 設定時間的時區 注意這裡是上海 # imports = [ # "proj.tasks", # 匯入py檔案,經過測試可以不需要 # ] beat_schedule = { '任務名字' : { 'task' : 'proj.tasks.add', # 這個就是我們定義的具體任務 'schedule' : crontab(), # 預設是一分鐘一次,具體其他時間設定可以參考該類定義的構建函式 # 'args' : (2, 5) 'kwargs': { 'x' : 4, 'y' : 7 } # 這個crontab就是時間排程配置:每分鐘執行一次,所以一分鐘一條 } }
①、首先要先設定一下時區,不然很悲催
②、定義任務,可以看到是字典格式,定義多個,只需繼續增加就可以
③、定義輪訓相關時間schedule:
貼一下原始碼,可以看到分鐘、小時、天、周,根據需要進行例項化類crontab即可。
④、關於args和kwargs引數,我定義的任務需要傳遞引數,這裡就可以使用這兩個
使用args可以使用元組和列表(2, 3),建議使用元組,如果只有一個引數記得後邊的,
使用kwargs 字典{你的形參:值}
2、celery.py
# coding=utf-8 from . import celeryconfig from celery import Celery app = Celery( "proj", include=['proj.tasks'] ) app.config_from_object(celeryconfig) if __name__ == "__main__": app.start()
3、tasks.py
# coding=utf-8 import time from .celery import app @app.task def add(x=3, y=4): return x + y @app.task def mul(x, y): return x * y
4、接下來啟動定時任務
5、啟動celery
然後我們看到執行結果。