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的使用的更多相关文章

  1. Django中Celery的实现介绍(一)

    Django中Celery的实现 Celery官网http://www.celeryproject.org/ 学习资料:http://docs.jinkan.org/docs/celery/ Cele ...

  2. Django中Celery http请求异步处理(四)

    Django中Celery http请求异步处理 本章延续celery之前的系列 1.settings配置 2.编写task jib_update_task任务为更新salt jid数据 3.url设 ...

  3. 异步任务队列Celery在Django中的使用

    前段时间在Django Web平台开发中,碰到一些请求执行的任务时间较长(几分钟),为了加快用户的响应时间,因此决定采用异步任务的方式在后台执行这些任务.在同事的指引下接触了Celery这个异步任务队 ...

  4. Django 中使用 Celery

    起步 在 <分布式任务队列Celery使用说明> 中介绍了在 Python 中使用 Celery 来实验异步任务和定时任务功能.本文介绍如何在 Django 中使用 Celery. 安装 ...

  5. Python中Celery 的基本用法以及Django 结合 Celery 的使用和实时监控进程

    celery是什么 1 celery是一个简单,灵活且可靠的,处理大量消息的分布式系统 2 专注于实时处理的异步任务队列 3 同时也支持任务调度 执行流程 Celery 基本使用 tasks.py i ...

  6. Django中使用Celery

    一.前言 Celery是一个基于python开发的分布式任务队列,如果不了解请阅读笔者上一篇博文Celery入门与进阶,而做python WEB开发最为流行的框架莫属Django,但是Django的请 ...

  7. Django中使用Celery实现定时任务(用djcelery)

    一.引言 Django是python语言下的一个比较热门的Web框架,越来越多的企业和开发者使用Django实现自己的Web服务器.在Web服务器开发过程中,有时候我们不仅仅是要实现Web服务器端和用 ...

  8. celery在Django中的应用

    这里不解释celery,如果不清楚可以参考下面链接: http://docs.celeryproject.org/en/latest/getting-started/introduction.html ...

  9. celery在Django中的集成使用

    继上回安装和使用Redis之后,看看如何在Django中使用Celery.Celery是Python开发分布式任务列队的处理库.可以异步分布式地异步处理任务,也可定时执行任务等等.通常我们可以在Dja ...

随机推荐

  1. 生命周期方法调用,以及在onStop()方法中处理草稿信息

    生命周期方法调用顺序 1. 从会话列表界面跳转到信息列表界面. 07-17 17:29:18.718: I/txrjsms(19370): MessageListActivity.onCreate 0 ...

  2. 修改谷歌云google cloud engine VM root账户的密码和允许远程ssh登录

      Figured it out. The VM's in cloud engine don't come with a root password setup by default so you'l ...

  3. ios中base64编码

    参考文章:其中文章的:http://blog.csdn.net/ztp800201/article/details/9470065 下载包 其中 包括GTMBase包下载地址 http://pan.b ...

  4. ubuntu下安装迅雷thunder

    迅雷是windows xp下必装的下载工具,作为一款跨协议的下载软件,迅雷的下载速度极其强悍. 那么在ubuntu下能否安装迅雷呢? 到ubuntu中文论坛逛了一圈,发现有现成的wine-thunde ...

  5. 整理打印PI值

    准备锻炼背诵PI的小数,找到PI值: PI=3. 141592653589793238462643383279502884197169399375105820974944592307816406286 ...

  6. JavaScript escape() unescape() decodeURI()函数对字符串进行编码解码

    定义和用法 escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串. 语法 escape(string) 参数 描述 string 必需.要被转义或编码的字符串. 返回值 已 ...

  7. VS2010编译Boost 1.56

    (1)首先下载源代码:http://softlayer-dal.dl.sourceforge.net/project/boost/boost/1.56.0/boost_1_56_0.zip 解压到某个 ...

  8. C# Httpclient客户端操作

    原文地址:https://www.cnblogs.com/Xujg/p/4113387.html HttpClient 当前主流用法,异步请求,自.NET4.5开始可从Nuget包管理中获取. usi ...

  9. 【C语言】练习1-22

     题目来源:<The C programming language>中的习题  练习1-22:编写一个程序,把较长的输入行‘折’成短一些的两行或者多行,折行的位置在输入行的第n列之前的最后 ...

  10. thinkphp日志分析

    #!/usr/bin/perl -w use strict; use warnings; use Tie::File; #### # Thinkphp日志分析 # 日志基本格式:{$now} &quo ...