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执行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/457169.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

test.php.bak,MongoDB热备份工具:解决官方版备份缺陷

贺春旸,凡普金科DBA团队负责人,《MySQL管理之道:性能调优、高可用与监控》第一、二版作者,曾任职于中国移动飞信、安卓机锋网。致力于MariaDB、MongoDB等开源技术的研究,主要负责数据库性能调优、监控和架构设计。工具…

zookeeper工作原理、安装配置、工具命令简介

1 Zookeeper简介Zookeeper 是分布式服务框架,主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等等。 ZooKeeper是一个分布式的,开放源码的分布式应用程序…

流式大数据处理的三种框架:Storm,Spark和Samza

许多分布式计算系统都可以实时或接近实时地处理大数据流。本文将对三种Apache框架分别进行简单介绍,然后尝试快速、高度概述其异同。 Apache Storm 在Storm中,先要设计一个用于实时计算的图状结构,我们称之为拓扑(topology&#x…

linux_bash_shell_cheat_sheet(自译)

【说明】 发现错误或不足请务必联系我!!! linux_bash_shell_cheat_sheet.pdf (英文原本以及译本下载,链接失效请私信或邮箱联系) 转载于:https://www.cnblogs.com/15ho/p/5947534.html

热血街头Java,下载_我爱法语 V3.01 多国语言版_6z6z下载站

我爱法语是一款功能强大的法语电子词典工具。融合了法汉,汉法,法法,英法,法英,英汉,法意等各类词库。该工具使用灵活,操作简单,充分吸收了法汉、汉法、法法、英法、法英、英汉、法意…

BZOJ 1087 [SCOI2005]互不侵犯King ——状压DP

【题目分析】 沉迷水题&#xff0c;吃枣药丸。 【代码】 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define F(i,j,k) for (int ij;i<k;i) #define ll long long int cot[512],c1[512]…

java中为什么设计包装类,Java 中为什么要设计包装类

最近文章更新频率慢了&#xff0c;因为最近在准备暑期实习&#xff0c;之前寻思着一边复习一边写文章&#xff0c;两全其美。后来发现一篇读起来比较舒服的文章写出来加上配图得花上四五个小时甚至更多&#xff0c;但这个知识点我可能半个小时就能复习完了&#xff0c;春招在即…

Python的Django框架中forms表单类的使用方法详解

Form Form的验证思路 前端&#xff1a;form表单 后台&#xff1a;创建form类&#xff0c;当请求到来时&#xff0c;先匹配&#xff0c;匹配出正确和错误信息。 Django的Form验证实例&#xff1a; 创建project&#xff0c;进行基础配置文件配置 settings.py settings.py之…

生动形象的理解API是如何工作的!

API(Application Programming Interface,应用程序编程接口) 简单来说&#xff0c;就是其他人开发出来一块程序&#xff0c;你想用&#xff0c;他会告诉你调用哪个函数&#xff0c;给这个函数传什么参数&#xff0c;然后又会返回给你一个什么样的结果&#xff0c;你不需要知道他…

echarts 柱状图 ,颜色和显示设置

最近在使用echart开发图标&#xff0c;api里面虽然有些设置&#xff0c;但是如果想让柱状图每个柱的颜色都不相同&#xff0c;简单的通过color设置是没有作用的&#xff0c;这里&#xff0c;就要用到其他的方式了 下面只是列举下我认为比较常用的&#xff0c;其他的比较简单&am…

Pycharm 专业版 导入系统pip安装的包

Pycharm 专业版 导入系统pip安装的包 在setting 中找到project interpeter ,点击设置图标&#xff0c;点击Add&#xff0c;得到如图所示选择 System Interpreter即可,这样 用pip安装的包都加再进来了

nodejs express

2019独角兽企业重金招聘Python工程师标准>>> 创建express服务器 //app.js文件 var express require(express); var app express(); //指定更目录显示的内容 app.get(/, function(req, res){ res.send(Hello World); }); //指定监听端口 var server app.listen(…

DuangDuangDuang!码云项目的 Readme.md 特殊技能

为什么80%的码农都做不了架构师&#xff1f;>>> 我们在 码云 上创建新项目的时候&#xff0c;常常会看到默认使用 README 文件初始化该项目&#xff08;如图1 所示&#xff09;&#xff0c;然后在新建项目的根目录下就会生成一个 README.md 文件&#xff08;如图2 …

Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist.

谷歌浏览器报错 版本 73.0.3683.103&#xff08;正式版本&#xff09; &#xff08;32 位&#xff09;报错内容如下Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist.jquery.js:2 Cross-Origin Read Blocking (CORB) blocked cros…

解决Django静态文件配置pycharm高光问题

就困扰了我半天的Django静态文件配置问题 更改了setting 文件后 文件参考问题总会高亮让然觉得又错误怪怪的 所以索性直接眼不见心不烦 具体操作如下图&#xff1a; 就这样就可以啦 大功告成&#xff01; 也顺便提一下静态文件配置问题&#xff1a; Django静态加载的设置…

python神经网络可视化,python中的神经网络感受野可视化

这是我想出的解决方案。谢谢mprat的帮助。在我发现spectralcolormap最适合这种任务&#xff0c;而且我还添加了您可以指定的边框。在from matplotlib import pyplotimport numpy as npborder 2images_amount 300row_amount 10col_amount 30image_height 28image_width 28…

Qt 多媒体音频模拟按钮发音(音视频启动)

## 项目演示 平台:windows或者ubuntu 要求:平台需要支持音频播放功能 文件格式:.wav 可以使用剪映生成,音频部分,我这里是简短的音乐 # Qt 多媒体简介 Qt QSound是Qt框架中的一个类,用于播放音频文件。它可以在Qt应用程序中实现简单的音频播放功能,包括播放、暂停和…

ASP.NET MVC5 ModelBinder

什么是ModelBinding ASP.NET MVC中&#xff0c;所有的请求最终都会到达某个Controller中的某个Action并由该Action负责具体的处理和响应。为了能够正确处理请求&#xff0c;Action的参数&#xff08;如果有的话&#xff09;&#xff0c;必须在Action执行之前&#xff0c;根据相…

php在html里面的位置,关于script在html中的摆放位置解析

以前一直觉得script在html中的任何位置都可以&#xff0c;今天做一个需求的时候才更正了自己的错误思想啊--script的位置也不是随便放的。本文主要谈论关于script在html中的摆放位置。小编觉得挺不错的&#xff0c;现在就分享给大家&#xff0c;也给大家做个参考。希望能帮助到…

Protocol Buffer技术详解(C++实例)

原文&#xff1a;http://www.cnblogs.com/stephen-liu74/archive/2013/01/04/2842533.html 这篇Blog仍然是以Google的官方文档为主线&#xff0c;代码实例则完全取自于我们正在开发的一个Demo项目&#xff0c;通过前一段时间的尝试&#xff0c;感觉这种结合的方式比较有利于培训…