django中celery的使用
1.什么是celery
celery是一个异步任务框架,当我们的程序中存在一个比较耗时的操作时,可以启动这个异步任务框架,
将耗时操作,交给它来完成,这样节省了程序的执行时间。
2.celery的原理
celery开启时,可以指定多个工作进程,并发进行工作。我们需要指定一个消息队列,来存放待执行的任务,任务执行结果。
常见的消息队列有,RabbitMQ,Redis,Database,一般推荐RabbitMQ,Redis效率更高。
3.同步请求,异步请求
同步请求:所有逻辑在View中处理完毕后,返回response,在view处理任务时用户处于等待状态,直到页面返回结果。
异步请求:View中先返回response,再在后台处理任务,用户无需等待,可以继续浏览网站,任务处理完成时,再告知用户。
4.同步请求示例
from django.shortcuts import render
# Create your views here.
from django.http import HttpResponse
import time
def send_mail(email):
print("start send email to %s" % email)
time.sleep(5)
print("success")
return True
def home(request):
send_mail("shijingjing07@126.com")
return HttpResponse("end")
运行程序,发现直到5秒以后才会出现响应:

5.celery安装
pip install django-celery
6.redis安装
windows下,下载redis,解压,里面有个redis-server.exe执行程序,点击开启redis服务
7.异步请求示例
1)在django工程的settings.py文件中添加如下代码:
import djcelery
djcelery.setup_loader()
BROKER_URL = 'redis://localhost:6379/0'
CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
INSTALLED_APPS = {
......
'djcelery'
}
2)新建异步任务,在app目录下,新建tasks.py,代码如下:
from celery import task
import time
@task
def send_mail(email):
print("start send email to %s" % email)
time.sleep(5)
print("success")
return True
3)修改views.py,代码如下:
from django.http import HttpResponse
import time
from .tasks import send_mail
def home(request):
send_mail.delay("shijingjing07@126.com")
return HttpResponse("end")
4)开启celery,异步任务处理进程,进程会自动搜索项目下的task任务,加入处理列表
python manage.py celery worker -c 4 --loglevel=info

5)启动web程序
python manage.py runserver
运行结果如下,页面会立即响应:

celery异步处理进程执行如下:

django中celery的使用的更多相关文章
- Django中Celery的实现介绍(一)
Django中Celery的实现 Celery官网http://www.celeryproject.org/ 学习资料:http://docs.jinkan.org/docs/celery/ Cele ...
- Django中Celery http请求异步处理(四)
Django中Celery http请求异步处理 本章延续celery之前的系列 1.settings配置 2.编写task jib_update_task任务为更新salt jid数据 3.url设 ...
- 异步任务队列Celery在Django中的使用
前段时间在Django Web平台开发中,碰到一些请求执行的任务时间较长(几分钟),为了加快用户的响应时间,因此决定采用异步任务的方式在后台执行这些任务.在同事的指引下接触了Celery这个异步任务队 ...
- Django 中使用 Celery
起步 在 <分布式任务队列Celery使用说明> 中介绍了在 Python 中使用 Celery 来实验异步任务和定时任务功能.本文介绍如何在 Django 中使用 Celery. 安装 ...
- Python中Celery 的基本用法以及Django 结合 Celery 的使用和实时监控进程
celery是什么 1 celery是一个简单,灵活且可靠的,处理大量消息的分布式系统 2 专注于实时处理的异步任务队列 3 同时也支持任务调度 执行流程 Celery 基本使用 tasks.py i ...
- Django中使用Celery
一.前言 Celery是一个基于python开发的分布式任务队列,如果不了解请阅读笔者上一篇博文Celery入门与进阶,而做python WEB开发最为流行的框架莫属Django,但是Django的请 ...
- Django中使用Celery实现定时任务(用djcelery)
一.引言 Django是python语言下的一个比较热门的Web框架,越来越多的企业和开发者使用Django实现自己的Web服务器.在Web服务器开发过程中,有时候我们不仅仅是要实现Web服务器端和用 ...
- celery在Django中的应用
这里不解释celery,如果不清楚可以参考下面链接: http://docs.celeryproject.org/en/latest/getting-started/introduction.html ...
- celery在Django中的集成使用
继上回安装和使用Redis之后,看看如何在Django中使用Celery.Celery是Python开发分布式任务列队的处理库.可以异步分布式地异步处理任务,也可定时执行任务等等.通常我们可以在Dja ...
随机推荐
- 分析Linux上的程序依赖
ldd [path_to_exe] ldd通过调用动态链接器来获取可执行程序的依赖库,但是并不推荐在未知的可执行程序上执行业ldd来获取其依赖库,因为部分版本的ldd会直接通过调用该可执行程序来获取其 ...
- codeM 2018 资格赛
比赛链接:https://www.nowcoder.com/activity/2018codem/index?from=meituan 1.下单 给定若干商品,可以选择打折.满减两种方式. #incl ...
- CTF SQL注入知识点
理解常用的登录判断 select * from user where username='admin' and password='123' 数据库元信息 infomation_schema 懂PHP ...
- MATLAB 在同一个m文件中写多个独立的功能函数
MATLAB 在同一个m文件中写多个独立的功能函数,从而实现在外部可以直接调用这个文件中的某一个函数. 鉴于MATLAB的函数文件的函数名与文件名要一样,就需要有一个统一的接口来涵盖这些功能函数. 例 ...
- java+win7+eclipse+Maven+sikuli 配置总结---图形脚本语言
简介:Sikuli 是一种新颖的图形脚本语言,或者说是一种另类的自动化测试技术.它与我们常用的自动化测试技术(工具)有很大的区别. 关于配置,一直是一个问题,下面做个总体介绍,用sikuli也有几个月 ...
- wxml解析
一.数据绑定 wxml中的动态数据均来自于对应js文件中的Page的data,在js中访问Page的data用this.data, 改变data中某个属性的值用setData()方法. Page({ ...
- ASP.NET Core Linux环境安装并运行项目
原文地址:https://blog.csdn.net/u014368040/article/details/79192622 一 安装环境 1. 从微软官网下载 Linux版本的.NetCoreSd ...
- java.lang.IllegalStateException: No typehandler found for mapping XXX
前言:今天遇到了这个问题,刚开始觉得很容易解决的,毕竟能定位到出问题的文件和对应的字段,根据以往的经验也可以判断出是字段映射类型不匹配的问题,后来找了半天还是没找到问题的根源,从网上百度,也没看到令人 ...
- labview中小黑点,小红点
小黑点:在labview中每一个小黑点就代表了一次内存的分配,通过小黑点可以帮助我们分析数据变量的内存拷贝情况
- tomcat jvm 参数优化
1. 内存设置 常见配置汇总 堆设置 -Xms:初始堆大小 -Xmx:最大堆大小 -XX:NewSize=n:设置年轻代大小 -XX:NewRatio=n:设置年轻代和年老代的比值.如:为3,表示年轻 ...