前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django Celery4 异步任务配置和使用

Django Celery4 异步任务配置和使用

作者头像
Autooooooo
发布2020-11-09 09:55:00
4360
发布2020-11-09 09:55:00
举报
文章被收录于专栏:Coxhuang

Celery4 异步任务

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

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

#0 GitHub

代码语言:javascript
复制
https://github.com/Coxhuang/django-celery4

#1 环境

代码语言:javascript
复制
Python3.7
celery==4.3.0
django==2.0.7
redis==3.2.1 # 低版本的redis不兼容celery

#2 项目配置

#3 需求分析

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

#4 开始

#4.1 开一个发送邮箱接口

视图函数

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

tasks.py

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

在app下__init__.py文件

代码语言:javascript
复制
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 测试

  • 访问接口
  • 打开worker
代码语言:javascript
复制
celery multi start worker1 -A celery4


注意事项

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



本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/05/02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Celery4 异步任务
  • #0 GitHub
  • #1 环境
  • #2 项目配置
  • #3 需求分析
  • #4 开始
    • #4.1 开一个发送邮箱接口
      • #4.2 测试
      • 注意事项
        • #1 在app下的__init__.py必须加上那些代码,否则不会成功
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档