celery定時執行任務 的使用


1 參照博客 https://www.cnblogs.com/xiaonq/p/9303941.html#i1

1 創建celery_pro包   # 可在任意文件下

2 在 celery_pro 下創建 celery.py 文件

# -*- coding:utf8 -*-
from __future__ import absolute_import, unicode_literals
#1. absolute_import 可以使導入的celery是python絕對路基的celery模塊,不是當前我們創建的celery.py
#2. unicode_literals 模塊可能是python2和3兼容的,不知道
from celery import Celery
# from .celery import Celery        #這樣才是導入當前目錄下的celery

app = Celery('proj',
             broker='redis://localhost',
             backend='redis://localhost',
             include=['celery_pro.tasks',
                    
                      ])
#celery-pro是存放celery文件的文件夾名字

#實例化時可以添加下面這個屬性
app.conf.update(
   result_expires=3600,        #執行結果放到redis里,一個小時沒人取就丟棄
)
import time
# 配置定時任務:每5秒鍾執行 調用一次celery_pro下tasks.py文件中的add函數
app.conf.beat_schedule = {
    'add-every-5-seconds': {
        'task': 'celery_pro.tasks.add',
        'schedule': 5.0,
        'args': (16, 16),
    },

}

app.conf.timezone = 'UTC'

if __name__ == '__macelery -A celery_pro beat -l infoin__':
   app.start()

 3 創建 tasks.py 文件

# -*- coding:utf8 -*-
from __future__ import absolute_import, unicode_literals
from .celery import app       #從當前目錄導入app

#寫一個add函數
@app.task
def add(x, y):
    
    print('執行函數')
    return x + y

  

 執行下面兩條命令即可讓celery定時執行任務了 

1、 啟動一個worker:在celery_pro外層目錄下執行

        celery -A celery_pro worker -l info

    2、 啟動任務調度器 celery beat

        celery -A celery_pro beat -l info

    3、執行效果

        看到celery運行日志中每5秒回返回一次 add函數執行結果   

 

 3、啟動celery的worker:每台機器可以啟動8個worker

                  1pythondir目錄下啟動 /pythondir/celery_pro/ 目錄下的worker

       celery -A celery_pro.celery worker -i info     

                          celery -A celery_pro worker -l info

                  2、后台啟動worker/pythondir/celery_pro/目錄下執行

                          celery multi start w1 -A celery_pro -l info             #在后台啟動w1這個worker

                          celery multi start w1 w2 -A celery_pro -l info       #一次性啟動w1,w2兩個worker

                          celery -A celery_pro status                                       #查看當前有哪些worker在運行

                          celery multi stop w1 w2 -A celery_pro                   #停止w1,w2兩個worker

                          celery multi restart w1 w2 -A celery_pro               #重啟w1,w2兩個worker

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM