1. 程式人生 > 其它 >celery非同步分散式框架使用二(定時任務)

celery非同步分散式框架使用二(定時任務)

一、簡介

  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

    

    然後我們看到執行結果。