Django Celery4 异步任务配置和使用

Celery4 异步任务

celery定时任务请看下面这篇博客

https://blog.csdn.net/Coxhuang/article/details/89058429

#0 GitHub

https://github.com/Coxhuang/django-celery4

#1 环境

Python3.7
celery==4.3.0
django==2.0.7
redis==3.2.1 # 低版本的redis不兼容celery

#2 项目配置

  • 新建Django项目
  • 配置和celery的定时任务一致(Django配置请看这里?? https://blog.csdn.net/Coxhuang/article/details/89058429)

#3 需求分析

  • 用户在"找回密码"功能中,点击发送邮件,会发送相应的数据到指定邮箱
  • 发送邮箱需要比较长的时间处理
  • django 原生为单线程序,当第一个请求没有完成时,第二个请求辉阻塞,知道第一个请求完成,第二个请求才会执行。
  • 不希望用户界面长时间存于等待邮箱发送中的状态

#4 开始

#4.1 开一个发送邮箱接口

视图函数

from django.shortcuts import render,HttpResponse
from app.tasks import send_email
def email_api(request):
    send_email.delay() # 发送邮件(异步)
    return HttpResponse("邮件发送成功 !!! ")

tasks.py

@shared_task
def send_email():
    print("邮件发送中...")
    sleep(5) # 模拟发送邮件消耗的时间
    xxx.objects.create(
        name="发送邮件",
    ) # 把记录加到数据库中,(凭个人爱好,可加可不加)
    return "邮箱发送成功"

在app下__init__.py文件

from __future__ import absolute_import

# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from .celery import app as celery_app

__all__ = ['celery_app']

#4.2 测试

  • 访问接口

20190502165925-image.png

  • 打开worker
celery multi start worker1 -A celery4

20190502171147-image.png


20190502171241-image.png


20190502171338-image.png

注意事项

#1 在app下的__init__.py必须加上那些代码,否则不会成功



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值