需求:

django支持的http请求都是同步的,对于需要耗时较长的操作可能会导致阻塞。为此我们需要引入异步处理机制,即收到客户端请求后立即给予响应,具体任务交给另一个进程处理。

使用方法:

1. 安装软件

pip install celery

pip install django-celery

2. 在django项目(设为djprj)添加以下文件:

1) djprj/djprj/celery.py,内容如下:

  1. from __future__ import absolute_import
  2. import os
  3. from celery import Celery
  4. # set the default Django settings module for the 'celery' program.
  5. os.environ.setdefault('DJANGO_SETTINGS_MODULE','djprj.settings')
  6. from django.conf import settings
  7. app = Celery('djprj', backend='redis', broker='redis://127.0.0.1:6379/0')
  8. # Using a string here means the worker will not have to
  9. # pickle the object when using Windows.
  10. app.config_from_object('django.conf:settings')
  11. app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

2) 修改djprj/djprj/__init__.py文件,加入以下内容:

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

3) 在djprj项目中需要异步处理的app中加入tasks.py文件。

内容如下:

  1. # -*- coding: utf-8 -*-
  2. # 本模块定义了celery任务
  3. from __future__ import absolute_import
  4. import logging
  5. from celery import shared_task
  6. @shared_task
  7. def add(x, y):
  8. log = logging.getLogger(config.HC_ASVR_LOG_NAME_TRACK)
  9. log.debug("Enter celery task tk2.tasks.add()")
  10. return x + y

4) 尝试启动celery

celery -A djprj worker --loglevel=info --workdir=/path/to/djprj --logfile=/path/to/logfile

如果执行成功,则将其加入到supervisord配置文件,运行于守护进程模式。

参考博客http://blog.csdn.net/yuanchao99/article/details/46413651

django使用celery实现异步操作的更多相关文章

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

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

  2. django集成celery之callback方式link_error和on_failure

    在使用django集成celery进行了异步调度任务之后,如果想对失败的任务进行跟踪或者告警,怎么做? 这里提供一个亲测的方法. 1.任务callback 假如你想在任务执行失败的时候,打印错误信息并 ...

  3. django集成celery

    Celery是一个基于分布式消息传递的开源异步任务队列,在django实际应用场景下,往往有一些较为耗时,但并不需要返回值的任务, 例如发送邮件,更新我们自己的统计数据库,这时我们可以将这些任务交由c ...

  4. django配置celery

    官网详尽的django结合celery的配置步骤 在django项目settings.py所在的目录中新建一个celery.py,内容如下 from __future__ import absolut ...

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

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

  6. Django使用Celery进行异步任务

    Celery Celery是一个功能完备即插即用的异步任务队列系统.它适用于异步处理问题,当发送邮件.或者文件上传, 图像处理等等一些比较耗时的操作,我们可将其异步执行,这样用户不需要等待很久,提高用 ...

  7. django、celery异步发邮件

    django.celery异步发邮件 django自带的send_mail发邮件功能执行发邮件功能会因为网络的原因造成花费的时间过长,为了解决这个问题,可以用celery + redis代替 安装包: ...

  8. python django与celery的集成

    一.celery与django 关于celery介绍和使用可以查看上篇Python中任务队列-芹菜celery的使用 关于django的介绍和使用可查看python django框架+vue.js前后 ...

  9. Django集成celery实战小项目

    上一篇已经介绍了celery的基本知识,本篇以一个小项目为例,详细说明django框架如何集成celery进行开发. 本系列文章的开发环境: window 7 + python2.7 + pychar ...

随机推荐

  1. php 给图片增加背景平铺水印代码

    如果你想利用php 给图片增加背景平铺水印效果话,必须利用php的一个插件来实例,就是利用imagick,他可以给图片增加背景平铺水印效果哦,下面我们提供一款实例代码. 如果你想利用php教程 给图片 ...

  2. oracle 创建表空间及oracle 11g表空间之最大最小

    /*分为四步 *//*第1步:创建临时表空间 */create temporary tablespace emaoyi_temp tempfile 'D:\app\Administrator\prod ...

  3. QT界面 理解QStyle和QStyleOption以及QStyleFactory

    QStyleOption类和QStyle类简介 QStyleOption类存储QStyle函数使用的参数.QStyleOption及其子类包含了QStyle函数绘制图形元素所需的所有信息. 由于性能原 ...

  4. 【Spring】java.lang.IndexOutOfBoundsException: Index: 256, Size: 256

    Spring接受前台的数据超过256出现例如以下异常: org.springframework.beans.InvalidPropertyException: Invalid property 'sp ...

  5. chpasswd 更简单的更改密码的方式

    [root@m01 .ssh]# useradd test[root@m01 .ssh]# echo "test:123"|chpasswd Linux命令:chpasswd 批量 ...

  6. ORACLE 10g RAC [ CSSCLNT][1]clsssInitNative: connect failed, rc 9

    "[ CSSCLNT][1]clsssInitNative: connect failed, rc 9“是Oracle RAC中经常遇到的问题,主要出现在安装过程和启动过程中.经常在$ORA ...

  7. 终于找到了最新的Chemdarw注册码

    随着中国人对知识产权的保护意识提升,正版软件越来越流行,只有一小部分人还在寻找Chemdarw破解版.最新的ChemDraw 15正式版本已经强势来袭,在获取软件安装包之后需要有效的注册码才能激活软件 ...

  8. 安装ChemOffice 15.1就是这么简单

    化学绘图软件ChemDraw出了最新版ChemOffice 15.1了,其下有三个不同组件,其中ChemDraw15.1 Pro使用范围最广.当我们下载完软件后就需要对其进行安装,一般按照流程来就没有 ...

  9. css各居中大法

    <!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title> ...

  10. Office Developer Tools for Visual Studio 2012现在可用了

    [原文发表地址]   Now Available: Office Developer Tools for Visual Studio 2012 正如我以前写过的,我们正在为构建下一代Office和 S ...