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
