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
1、在pythondir目錄下啟動 /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