celery 文档
-
同步:当一个任务执行时,主线程 等待 任务执行完成之后,得到结果,才继续向下执行
-
异步:当一个任务执行时,主线程将任务交给其他线程处理,并不等待,而是继续执行,等到其他线程完成任务之后,将结果返回给主线程
创建celery对象,使用装饰器装饰器装饰发送短信的函数
from rest_framework.views import APIView
from rest_framework.response import Response
from utils.sms_code import send_message
from .models import User
# 注意:项目中导入异步任务的路径 ,和接下来启动 celery任务的路径要一致
from utils.redisCli import get_redis_cli
import random
class SMSCodeAPIView(APIView):
def post(self, request):
...
# 6. 发送短信验证码
send_message.delay(mobile, code)
# 7.
return Response({'msg': '发送成功'}, status=200)
在视图中,调用被装饰后的函数
from rest_framework.views import APIView
from rest_framework.response import Response
from utils.sms_code import send_message
from .models import User
# 注意:项目中导入异步任务的路径 ,和接下来启动 celery任务的路径要一致
from utils.redisCli import get_redis_cli
import random
class SMSCodeAPIView(APIView):
def post(self, request):
...
# 6. 发送短信验证码
send_message.delay(mobile, code)
# 7.
return Response({'msg': '发送成功'}, status=200)
启动celery异步任务
# 注意,当前路径,应该是在 utils的上一级路径中
# 启动celery异步任务
celery -A utils.sms_code worker -l info
小结
-
django接收请求,发送短信验证码
-
之前,必须等待发送完成,才能继续执行,浪费时间
-
因次,将发送短信任务变为 异步任务
-
django继续执行,而celery来执行耗时操作