1.创建目录
2.在__init__.py文件中创建celery对象
from celery import Celery
# 创建celery对象
celery_app = Celery('worker') # 任务执行的结果存放的位置
# 读取配置文件
celery_app.config_from_object('celery_tasks.celery')
3.在celery.py文件中写redis数据库
# 任务存放的地方6号redis数据库
BROKER_URL = 'redis://:123@localhost:6379/6'
# 结果存放的地方
CELERY_RESULT_BACKEND = 'redis://:123@localhost:6379/7'
# 导入指定的任务模块
CELERY_IMPORTS = (
'celery_tasks.tasks'
)
4.在tasks.py文件中写任务模块
from ronglian_sms_sdk import SmsSDK
import json
import celery
from celery_tasks import celery_app
# 任务的名字
@celery_app.task()
# 发送短信验证码
def send_message(phone,msg_code):
# 容联云的主账号信息
ACCID = ""
AUTHTOKEN = ''
APPID = ''
sdk = SmsSDK(ACCID, AUTHTOKEN, APPID)
tid = '1'
mobile = phone
datas = ('%s' % msg_code, 5)
res = sdk.sendMessage(tid, mobile, datas)
res_json = json.loads(res)
print('json数据为:', res_json)
return res_json
# 启动celery进程
# celery -A celery_tasks.tasks worker -l info -P gevent
5.在视图中写发送验证码
from celery_tasks.tasks import send_message
# 发送验证码
class SmsCode(Resource):
def get(self):
parse = reqparse.RequestParser()
parse.add_argument('phone')
args = parse.parse_args()
mobile = args.get('phone')
print('手机号为', mobile)
msg_code = '%06d' % random.randint(0, 1000000)
print('验证码为', msg_code)
task = send_message(mobile, msg_code)
print('验证码发送响应', task)
sms_key = 'sms_%s' % mobile
redis_cli.set(sms_key, msg_code, ex=300)
return jsonify(code=200, message='验证码发送成功,请注意查收!')
一.Celery介绍
二.Celery组件