Django中celery配置总结
情景:
用户发起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配置总结相关推荐
- Django中Celery简介
初识Celery: Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理,可将一些耗时的任务放入该消息队列中处理,一些定时任务也可以放入队列中自动执行 ...
- 任务队列:celery快速入门及django中celery的用法
文章目录 一.celey的简介 1.1 celery的工作机制 1.2 安装celery(5.2版本) 二.celery快速入门 2.1 选择broker 2.2 celery的简单使用 2.2.1 ...
- Django中如何配置CSS文件
Django中如何配置css文件 我的编辑器是pycharm,Django版本是2.1.0 1.在项目中manage.py同级目录下新建static文件夹,在static文件夹下新建css文件夹,在c ...
- Django 中celery的使用
1.django应用Celery django框架请求/响应的过程是同步的,框架本身无法实现异步响应. 但是我们在项目过程中会经常会遇到一些耗时的任务, 比如:发送邮件.发送短信.大数据统计等等,这些 ...
- Django框架(9.Django中的配置使用MySQL数据库以及页面重定向)
ORM框架简介 ORM框架还可以通过方便的配置就可以进行数据库的切换 进入虚拟环境,创建一个新的项目,django-admin startproject test2 (test2为项目名) 创建好 ...
- django中的配置setting
前言:相信看到这篇文章的小伙伴都或多或少有一些编程基础,懂得一些linux的基本命令了吧,本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署. 文章使用到的的工 ...
- 关于PDF.js使用过程中PDF不能识别中文的问题,进行DJango中的配置
PDF.js的要识别中文,必须要配置好两个文件, 第一: cmaps需要在viewer.js配置,我使用的pdf.js是2.3.200版本,搜索它的配置在: 因为我在django设定了静态文件目录为/ ...
- celery 可视化_Django中Celery的实现介绍(一)
Django中Celery的实现 Celery介绍 Celery是基于Python开发的一个分布式任务队列框架,支持使用任务队列的方式在分布的机器/进程/线程上执行任务调度. 上图展示的是Celery ...
- Django+redis+celery实现异步任务
1 Django中的异步请求 Django Web中从一个http请求发起,到获得响应返回html页面的流程大致如下:http请求发起 -- http handling(request解析) -- u ...
最新文章
- CUDA刷新器:CUDA编程模型
- 关于Kafka Spring Boot的教程
- 中国700万程序员不够用怎么办?我们去问了北大谢涛,顶会ASE最有影响力论文奖首批华人得主...
- 重构-改善既有代码的设计:重新组织函数的九种方法(四)
- yii2 设置的缓存无效,返回false,不存在
- 深入理解Java幂等性
- 【上海】关于云计算,你想学习哪些知识,快让我来满足你
- source insight 解决自动缩进 和 TAB键=4个SPACE
- 存储过程不可以封装_【小知识】功率半导体器件之10功率器件的封装可靠性
- The way to Go(5): 文件名、关键字与标识符
- 基于组件技术的电子海图显示系统开发方法
- 计算机能直接和cpu交换数据的是,内存储器_能直接与CPU交换信息的存储器是
- 免费智能AI文章生成器-只需要输入关键词自动生成文章的软件
- 跳转微信公众号首页方式
- [宋史学习] 赵光义篡改历史
- Netty傻瓜教程(四):bossGroup, workGroup?
- 应用中删除iCloud照片或视频 删除相册照片或视频
- Unity人工智能编程精粹学习笔记 AI角色的复杂决策——行为树
- 电脑录音效果不佳的问题解决
- 啊哈添柴挑战Java1581. 填数游戏(入门版)
热门文章
- 使用 Docker 部署 Node 服务
- com.alibaba.dubbo.rpc.RpcException: Forbid consumer 192.168.184.1 access service com.foreveross.syst
- shell字符串的用法
- poj2976 Dropping tests
- poj 3071 Football
- 【C】strcpy()需谨慎使用;
- [Silverlight]使用PagedCollectionView配合复选框实现动态筛选的解决方案
- 基于java的数据结构学习——泛型动态数组的封装
- 您收到一封 2019 阿里云峰会 (北京) 邀请函
- [转]windows系统激活