1.目录结构
-celery.py --------必须叫这个名字 放定时任务、里面实例化得到app对象
-home_task.py和user_task.py. ----------就是针对不同app的任务文件
2.各文件的内容
celery.py
from datetime import timedelta
from celery import Celery
from celery.schedules import crontab
import os
#celery在django中使用,就需要添加django的配置
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "luffy_api.settings.dev")
broker = 'redis://127.0.0.1:6379/2' # 结果储存的地址
backend = 'redis://127.0.0.1:6379/1' # 消息中间件
# include 里面存放任务路径
app = Celery(__name__, broker=broker, backend=backend, include=['celery_task.user_task'])
# 配置国际化
app.conf.timezone = 'Asia/Shanghai'
# 是否使用UTC
app.conf.enable_utc = False
# 定时任务配置
app.conf.beat_schedule = {
'updata_cache': {
'task': 'celery_task.home_task.update_cache', # 路径地址
'schedule': timedelta(seconds=5), # 五秒发一次
'args': (), # 参数
},
# 'send_sms': {
# 'task': 'celery_task.user_task.send_sms', # 路径地址
# 'schedule': timedelta(seconds=5), # 五秒发一次
# 'args': ('1822344343', 8888), # 参数
# },
# 'add_course': {
# 'task': 'celery_task.course_task.add_course',
# # 'schedule': crontab(hour=8, day_of_week=1), # 每周一早八点
# 'schedule': crontab(hour=11, minute=38), # 每天11点35,执行
# 'args': (),
# }
}
user_task.py--------写任务
from .celery import app #先找到celery.py里面的实例化的app
from luffy_api.libs.send_tx_sms import sms #
@app.task #订制任务,发送短信,任务要加装饰器
def send_sms(mobile,code):
sms.send_sms_by_mobile(mobile,code)
print('手机号%s,验证码为%s' %(mobile,code))
return True
提交任务--------提交异步任务 任务名.delay()
##########提交异步任务
res_id = send_sms.delay(mobile, code)
启动worker(worker监听消息队列,等待别人提交任务,如果没有就卡再这)
要先将路径切换到celery_task包
然后执行
celery -A celery_task worker -l info -P eventlet