django中celery的定時(shí)任務(wù)使用
話不多說言歸正傳
1.celery 的介紹
1.1celery的基本介紹
celery是基于python實(shí)現(xiàn)的一個(gè)異步任務(wù)的調(diào)用工具,同時(shí)還是一個(gè)任務(wù)隊(duì)列,主要用于處理耗時(shí)的任務(wù)。
celery也被稱為芹菜。
celery架構(gòu)由三個(gè)模塊組成:消息中間件,任務(wù)執(zhí)行單元和任務(wù)執(zhí)行結(jié)果儲(chǔ)存 組成。
其實(shí)那在剛接觸的時(shí)候小編的理解是 :
老板把地皮交給包工頭去干 讓包工頭把房子建好 然后包工頭找了工人 把任務(wù)分配給工人讓工人去干 最后工人蓋好房子老板驗(yàn)收(這是小編自己的理解也就適合入門)

1.2什么是celery beat
celery支持定時(shí)任務(wù),設(shè)定好任務(wù)的執(zhí)行時(shí)間,
celery就會(huì)定時(shí)自動(dòng)幫你執(zhí)行, 這個(gè)定時(shí)任務(wù)模塊叫celery beat
2.celery定時(shí)任務(wù)的配置

__init__.py
里面主要是celery初始化配置
from datetime import timedelta
from celery import Celery
import os
import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "自己的項(xiàng)目名.settings")
django.setup()
celery_app = Celery('mycelery')
#讀取celery 的配置
celery_app.config_from_object('celery_task.config')
# 定時(shí)任務(wù)
# 文件夾名.文件名
celery_app.autodiscover_tasks(['celery_task.times'])
celery_app.conf.update(
CELERYBEAT_SCHEDULE={
'sum-task': {
# 文件夾名.文件名.方法名
'task': 'celery_task.times.my_con',
# 多少秒執(zhí)行一次(eg:5秒一執(zhí)行)
'schedule': timedelta(seconds=5),
# 這是傳入my_con方法中的參數(shù)
'args': (5, 6)
},
'sum-task1': {
'task': 'celery_task.times.my_print',
'schedule': timedelta(seconds=3),
'args': ()
},
}
)config.py
"""
celery 配置
"""
消息中間件 broker
BROKER_URL = 'redis://xx.xx.xx.xx:6379/11'
任務(wù)結(jié)果存儲(chǔ) results backend
CELERY_RESULT_BACKEND = 'redis://xx.xx.xx.xx:6379/12'
# 時(shí)區(qū)
CELERY_TIMEZONE = 'Asia/Shanghai'
# 導(dǎo)入指定的任務(wù)模塊
CELERY_IMPORTS = (
'celery_task.tasks'
)task.py 里面寫的是異步任務(wù)就不展示了
times.py
里面寫的是定時(shí)任務(wù)
# 定時(shí)任務(wù)
import time
from celery_task import celery_app
@celery_app.task()
def my_con(x,y):
print(x,y)
print('x和y相加')
return x+y
@celery_app.task()
def my_print():
print('22222222')3.celery 啟動(dòng)命令
異步任務(wù)的啟動(dòng)命令:celery -A 任務(wù)名 worker -l info -P eventlet
定時(shí)任務(wù)的啟動(dòng)命令:celery -A 任務(wù)名 beat -l info
注意:要先啟動(dòng)異步任務(wù),在啟動(dòng)定時(shí)任務(wù)
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于 Python json中l(wèi)oad和loads區(qū)別
這篇文章主要介紹了關(guān)于 Python json中l(wèi)oad和loads區(qū)別,文章也有簡(jiǎn)單的說明它們之間的相同點(diǎn),然后詳細(xì)介紹不同點(diǎn),需要的朋友可以參考一下文章的具體內(nèi)容2021-11-11
python中readline判斷文件讀取結(jié)束的方法
這篇文章主要介紹了python中readline判斷文件讀取結(jié)束的方法,實(shí)例形式詳細(xì)分析了Python中readline的用法,需要的朋友可以參考下2014-11-11
python實(shí)現(xiàn)列表中最大最小值輸出的示例
今天小編就為大家分享一篇python實(shí)現(xiàn)列表中最大最小值輸出的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07
Python使用matplotlib繪制Logistic曲線操作示例
這篇文章主要介紹了Python使用matplotlib繪制Logistic曲線操作,結(jié)合實(shí)例形式詳細(xì)分析了Python基于matplotlib庫繪制Logistic曲線相關(guān)步驟與實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-11-11

