Celery學習--- Celery操作之定時任務
阿新 • • 發佈:2018-08-11
imp word 3.2 個性化 啟動 ott arc .com alt
celery支持定時任務,設定好任務的執行時間,celery就會定時自動幫你執行, 這個定時任務模塊叫celery beat
文件定時執行任務
項目前提: 安裝並啟動Redis
celery_Schedule.py
# version: python3.2.5 # author: ‘lft415659‘ from celery import Celery from celery.schedules import crontab # 可以實現復雜的定時任務 app = Celery(‘CelerySchedule‘, # redis://:password@hostname:port/db_number 有密碼認證的連接 broker=‘redis://192.168.2.105‘, # broker=‘redis://:密碼@192.168.2.105:6379/0‘, backend=‘redis://192.168.2.105‘, # 用於Celery的返回結果的接收 ) # 創建定時任務 @app.on_after_configure.connect # 啟動程序連接上celery後自動執行這個函數生成定時任務 def setup_periodic_tasks(sender, **kwargs): # 第一次參數必須是sender,是定時任務的一個實例 # Calls test(‘hello‘) every 10 seconds. 這裏的test是我們自定義的函數 sender.add_periodic_task(10.0, test.s(‘hello‘), name=‘add every 10‘) # Calls test(‘world‘) every 30 seconds sender.add_periodic_task(30.0, test.s(‘world‘), expires=10) # Executes every Monday morning at 7:30 a.m. 更復雜的定時任務 sender.add_periodic_task( crontab(hour=7, minute=30, day_of_week=1), test.s(‘Happy Mondays!‘), ) @app.task def test(arg): print(‘run task:‘, arg)
後臺啟動Celery的worker任務:
omc@omc-virtual-machine:~$ cd Celery omc@omc-virtual-machine:~/Celery$ vim celery_Schedule.py omc@omc-virtual-machine:~/Celery$ celery -A celery_Schedule worker -l info
啟動定時任務調度器[celery beat]
omc@omc-virtual-machine:~/Celery$ celery -A celery_Schedule beat
更復雜的定時任務
上面的定時任務比較簡單,只是每多少s執行一個任務,但如果你想要每周一三五的早上8點給你發郵件怎麽辦呢?哈,其實也簡單,用crontab功能,跟linux自帶的crontab功能是一樣的,可以個性化定制任務執行時間
【linux crontab】http://www.cnblogs.com/peida/archive/2013/01/08/2850483.html
【更多參考】http://www.cnblogs.com/alex3714/articles/6351797.html
from celery.schedules import crontab app.conf.beat_schedule = { # Executes every Monday morning at 7:30 a.m. ‘add-every-monday-morning‘: { ‘task‘: ‘tasks.add‘, ‘schedule‘: crontab(hour=7, minute=30, day_of_week=1), ‘args‘: (16, 16), }, }
像配置文件一樣定時執行任務【用的比較少】
app.conf.beat_schedule = { ‘add-every-30-seconds‘: { ‘task‘: ‘tasks.add‘, ‘schedule‘: 30.0, ‘args‘: (16, 16) }, } app.conf.timezone = ‘UTC‘
Celery學習--- Celery操作之定時任務