celery
http://docs.jinkan.org/docs/celery/getting-started/introduction.html?tdsourcetag=s_pcqq_aiomsg
redis
任務(wù)隊列(異步任務(wù))、定時任務(wù)
===================
1、本步驟的內(nèi)容可放在項目的init.py 文件中猜绣。celery容易產(chǎn)生循環(huán)引用秩贰。
import celery
# 注冊環(huán)境變量(注冊Django配置文件)
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'teamproject.settings')
# 創(chuàng)建Celery的實例 - broker代表消息代理(從哪里獲取消息隊列服務(wù))
app = celery.Celery('teamproject',
broker='redis://47.107.170.191/2')
# 讀取Django項目的配置信息
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda : settings.INSTALLED_APPS)
# celery -A teamproject worker -l info &
# 使用Windows 10做開發(fā)且使用celery 4.x版本需要先安裝一個三方庫作為輔助
# pip install eventlet
# 然后啟動celery的消費者的時候需要多加一個參數(shù)
# celery -A teamproject worker -l info -P eventlet
2霹俺、本步驟的內(nèi)容可放在項目的init.py 文件中。celery容易產(chǎn)生循環(huán)引用毒费。
# 配置定時任務(wù)
app.conf.update(
timezone=settings.TIME_ZONE,
enable_utc=True,
# 定時任務(wù)要通過消息的生產(chǎn)者將其轉(zhuǎn)換成隊列中的消息
# celery -A teamproject beat -l info
beat_schedule={
'task_one': {
'task': 'common.task.excel', #任務(wù)(視圖函數(shù))位置
'schedule': crontab(),#crontab是對時間設(shè)置的函數(shù)丙唧,默認每分鐘發(fā)布一個定時任務(wù)。
# 'args': ('劉強東觅玻,奶茶妹妹喊你回家喝奶啦', )
},
'task_two': {
'task': 'common.tasks.auto_export_excel', #任務(wù)(視圖函數(shù))位置
'schedule': crontab(), #crontab是對時間設(shè)置的函數(shù)想际,默認每分鐘發(fā)布一個定時任務(wù)。
# 'args': ('劉強東串塑,奶茶妹妹喊你回家喝奶啦', )
},
},
)
3沼琉、輸入命令
#定時發(fā)布任務(wù)命令(celery會將定時和異步任務(wù)放在 'redis://47.107.170.191/2')
celery -A teamproject beat -l info &
#執(zhí)行任務(wù)命令
celery -A teamproject worker -l info &
#注意:異步任務(wù)需要用 @app.task 裝飾要執(zhí)行的異步任務(wù)
#例如:
@app.task
def add(x,y):
return x+y
====================