Celery异步任务

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来执行耗时操作

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值