情景:

用户发起request,并等待response返回。在本些views中,可能需要执行一段耗时的程序,那么用户就会等待很长时间,
造成不好的用户体验,比如发送邮件、手机验证码等。

使用celery后,情况就不一样了。解决:将耗时的程序放到celery中执行。

celery官方网站http://www.celeryproject.org/

celery中文文档http://docs.jinkan.org/docs/celery/
celery名词:

任务task:就是一个Python函数。
队列queue:将需要执行的任务加入到队列中。
工人worker:在一个新进程中,负责执行队列中的任务。
代理人broker:负责调度,在布置环境中使用redis。
celery解决的问题:

当浏览器访问的页面当中有耗时的操作时,访问的客户体验不好使用celery可以将耗时的操作创建一个新的进程处理

执行流程:

产生任务task会放到queue队列中,代理人broker会通知空闲的worker工人队列中有任务,worker工人就会去队列中把任务task取出来执行。

每一个worker就是一个工作的进程。

安装包:

celery==3.1.25

celery-with-redis==3.0

django-celery==3.1.17

1.在test6/settings.py中安装。

INSTALLED_APPS = (...'djcelery',}

2.在test6/settings.py文件中配置代理和任务模块。

import djcelerydjcelery.setup_loader()BROKER_URL = 'redis://127.0.0.1:6379/2'CELERY_IMPORTS = ('booktest.task')

3.在booktest/目录下创建task.py文件。

import timefrom django.core.mail import send_mailfrom celery import taskfrom django.conf import settings@taskdef sayhello():print('hello ...')time.sleep(2)print('world ...')

4.打开booktest/views.py文件,修改sayhello视图如下:


from booktest import taskdef sayhello(request):task.sayhello.delay()return HttpResponse('ok')

5.执行迁移生成celery需要的数据表。

6.启动Redis,如果已经启动则不需要启动。

启动worker。python manage.py celery worker --loglevel=info通过浏览器访问sayhello视图函数即可
总结:将一个认为函数操作的功能定义到模块tast当中,然后在视图函数当中执行:tast.tast当中的函数名.delay()即可启动celery执行

Django中celery配置总结相关推荐

  1. Django中Celery简介

    初识Celery: Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理,可将一些耗时的任务放入该消息队列中处理,一些定时任务也可以放入队列中自动执行 ...

  2. 任务队列:celery快速入门及django中celery的用法

    文章目录 一.celey的简介 1.1 celery的工作机制 1.2 安装celery(5.2版本) 二.celery快速入门 2.1 选择broker 2.2 celery的简单使用 2.2.1 ...

  3. Django中如何配置CSS文件

    Django中如何配置css文件 我的编辑器是pycharm,Django版本是2.1.0 1.在项目中manage.py同级目录下新建static文件夹,在static文件夹下新建css文件夹,在c ...

  4. Django 中celery的使用

    1.django应用Celery django框架请求/响应的过程是同步的,框架本身无法实现异步响应. 但是我们在项目过程中会经常会遇到一些耗时的任务, 比如:发送邮件.发送短信.大数据统计等等,这些 ...

  5. Django框架(9.Django中的配置使用MySQL数据库以及页面重定向)

    ORM框架简介 ORM框架还可以通过方便的配置就可以进行数据库的切换 进入虚拟环境,创建一个新的项目,django-admin  startproject test2  (test2为项目名) 创建好 ...

  6. django中的配置setting

    前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署. 文章使用到的的工 ...

  7. 关于PDF.js使用过程中PDF不能识别中文的问题,进行DJango中的配置

    PDF.js的要识别中文,必须要配置好两个文件, 第一: cmaps需要在viewer.js配置,我使用的pdf.js是2.3.200版本,搜索它的配置在: 因为我在django设定了静态文件目录为/ ...

  8. celery 可视化_Django中Celery的实现介绍(一)

    Django中Celery的实现 Celery介绍 Celery是基于Python开发的一个分布式任务队列框架,支持使用任务队列的方式在分布的机器/进程/线程上执行任务调度. 上图展示的是Celery ...

  9. Django+redis+celery实现异步任务

    1 Django中的异步请求 Django Web中从一个http请求发起,到获得响应返回html页面的流程大致如下:http请求发起 -- http handling(request解析) -- u ...

最新文章

  1. CUDA刷新器:CUDA编程模型
  2. 关于Kafka Spring Boot的教程
  3. 中国700万程序员不够用怎么办?我们去问了北大谢涛,顶会ASE最有影响力论文奖首批华人得主...
  4. 重构-改善既有代码的设计:重新组织函数的九种方法(四)
  5. yii2 设置的缓存无效,返回false,不存在
  6. 深入理解Java幂等性
  7. 【上海】关于云计算,你想学习哪些知识,快让我来满足你
  8. source insight 解决自动缩进 和 TAB键=4个SPACE
  9. 存储过程不可以封装_【小知识】功率半导体器件之10功率器件的封装可靠性
  10. The way to Go(5): 文件名、关键字与标识符
  11. 基于组件技术的电子海图显示系统开发方法
  12. 计算机能直接和cpu交换数据的是,内存储器_能直接与CPU交换信息的存储器是
  13. 免费智能AI文章生成器-只需要输入关键词自动生成文章的软件
  14. 跳转微信公众号首页方式
  15. [宋史学习] 赵光义篡改历史
  16. Netty傻瓜教程(四):bossGroup, workGroup?
  17. 应用中删除iCloud照片或视频 删除相册照片或视频
  18. Unity人工智能编程精粹学习笔记 AI角色的复杂决策——行为树
  19. 电脑录音效果不佳的问题解决
  20. 啊哈添柴挑战Java1581. 填数游戏(入门版)

热门文章

  1. 使用 Docker 部署 Node 服务
  2. com.alibaba.dubbo.rpc.RpcException: Forbid consumer 192.168.184.1 access service com.foreveross.syst
  3. shell字符串的用法
  4. poj2976 Dropping tests
  5. poj 3071 Football
  6. 【C】strcpy()需谨慎使用;
  7. [Silverlight]使用PagedCollectionView配合复选框实现动态筛选的解决方案
  8. 基于java的数据结构学习——泛型动态数组的封装
  9. 您收到一封 2019 阿里云峰会 (北京) 邀请函
  10. [转]windows系统激活