django中使用celery简单介绍
链客,专为开发者而生,有问必答!
此文章来自区块链技术社区,未经允许拒绝转载。
本章节我们重点在于实现,如何存储任务的结果.
我们将任务函数改为:
from celery_demo.celery import app
import time
加上app对象的task装饰器
此函数为任务函数
@app.task
def my_task():
print("正在紧张处理任务....")time.sleep(5)# 返回任务执行结果return 100
此处需要用到额外包django_celery_results, 先安装包:
pip install django-celery-results
在celery_demo/settings.py中安装此应用:
INSTALLED_APPS = [
'django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','demo','**django_celery_results', # 注意此处应用名为下划线**
]
回到celery_demo/celery.py模块中,增加配置信息如下:
from celery import Celery
from django.conf import settings
import os
为celery设置环境变量
os.environ.setdefault(‘DJANGO_SETTINGS_MODULE’, ‘celery_demo.settings’)
创建应用
app = Celery(“demo”)
配置应用
app.conf.update(
# 配置broker, 这里我们用redis作为brokerBROKER_URL='redis://:332572@127.0.0.1:6379/1',**# 使用项目数据库存储任务执行结果CELERY_RESULT_BACKEND='django-db',**
)
设置app自动加载任务
从已经安装的app中查找任务
app.autodiscover_tasks(settings.INSTALLED_APPS)
创建django_celery_results应用所需数据库表, 执行迁移文件:
python manage.py migrate django_celery_results
我这里使用的是django默认的数据库sqlit, 执行迁移之后,会在数据库中创建一张用来存储任务结果的表()
再次从浏览器发送请求, 任务执行结束之后,将任务结果保存在数据库中:
django中使用celery简单介绍 (2)
本章节我们在django中去使用celery.创建项目celery_demo, 创建应用demo:
django-admin startproject celery_demo
python manage.py startapp demo
项目结构为:
在celery_demo模块中创建celery.py模块, 文件目录为:
celery.py模块内容为:
from celery import Celery
from django.conf import settings
import os
为celery设置环境变量
os.environ.setdefault(‘DJANGO_SETTINGS_MODULE’, ‘celery_demo.settings’)
创建应用
app = Celery(“demo”)
配置应用
app.conf.update(
# 配置broker, 这里我们用redis作为brokerBROKER_URL='redis://:332572@127.0.0.1:6379/1',
)
设置app自动加载任务
从已经安装的app中查找任务
app.autodiscover_tasks(settings.INSTALLED_APPS)
在应用demo包中创建tasks.py模块, 文件目录为:
我们在文件内创建一个任务函数my_task:
from celery_demo.celery import app
import time
加上app对象的task装饰器
此函数为任务函数
@app.task
def my_task():
print("任务开始执行....")time.sleep(5)print("任务执行结束....")
在views.py模块中创建视图index:
from django.shortcuts import render
from django.http import HttpResponse
from .tasks import my_task
def index(request):
将my_task任务加入到celery队列中
如果my_task函数有参数,可通过delay()传递
例如 my_task(a, b), my_task.delay(10, 20)
my_task.delay()return HttpResponse("<h1>服务器返回响应内容!</h1>")
在celey_demo/settings.py配置视图路由:
from django.conf.urls import url
from django.contrib import admin
from demo.views import index
urlpatterns = [
url(r'^admin/', admin.site.urls),url(r'^$', index),
]
创建worker等待处理celery队列中任务, 在终端执行命令:
celery -A celery_demo worker -l info
启动django测试服务器:
python manage.py runserver
django中使用celery简单介绍 (1)
Celery 是一个简单、灵活且可靠的,处理大量消息的分布式系统。
为什么需要这样的一个工具?
如果服务器端处理注册任务耗时比较长,客户端就会迟迟拿不到本次请求的结果,用户体验很不好。那么如何做更好一些?
我们可将耗时任务放到后台去执行,也就是异步执行。不会影响用户其他操作。如何实现异步执行任务呢?我们可使用celery. celery除了刚才所涉及到的异步执行任务之外,还可以实现定时处理某些任务。
Celery 是用 Python 编写的,但协议可以用任何语言实现。迄今,已有 Ruby 实现的 RCelery 、node.js 实现的 node-celery 以及一个 PHP 客户端。
celery是如何工作的呢?
我们将耗时的任务扔到celery的任务队列中,这个任务队列我们叫做broker,我们可以用redis, rabbitmq,数据库都可以扮演这个broker中间人的角色。然后由worker, 也就是真正从队列中拿走任务并处理的这个角色,我们可以指派worker来处理队列中的任务。
相关文章:

Node.js:路由
ylbtech-Node.js:路由1.返回顶部 1、Node.js 路由 我们要为路由提供请求的 URL 和其他需要的 GET 及 POST 参数,随后路由需要根据这些数据来执行相应的代码。 因此,我们需要查看 HTTP 请求,从中提取出请求的 URL 以及 GET/POST 参…

如何进行Web服务的性能测试?
随着浏览器功能的不断完善,用户量不断的攀升,涉及到web服务的功能在不断的增加,对于我们测试来说,我们不仅要保证服务端功能的正确性,也要验证服务端程序的性能是否符合要求。那么性能测试都要做些什么呢?我…

64位游戏找call_替换Unity可执行文件为64位,改善游戏性能
虽然Unity同时支持多种架构,但是总有些程序员选择只打包32位版本,既然我们没有办法手动给程序员的脑子抽水,那就自己动手替换一个64位版本吧以下面这个游戏为例右键目录内最大的可执行文件或dll,属性,查看版本显然这个游戏使用的是5.6.6版本的Unity打开Unity官网(https://unity…

Python数据分析学习文章归纳
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 数据分析如何入门学习How do I learn data analysis with Python? 虽然是英文的,不过看一遍很大收获(可以用百度翻译看一…

概率统计 —— 常犯错误
1. 患病的概率与医院的精度 已知某一种疾病在人群中的患病概率是万分之一(0.01%),某医院检查的精度为 99.9%,某人在该医院检查的结果显示自己患了这个病,那么此人确实患病的概率是多少? 也即在诊断出患病的…

python tcp不用循环监听_网络编程: TCP
1. IP 地址概念: 标识网络中设备的地址(需要联网才有没有联网, 是没有这个地址)表现形式:ipv4 目前主要使用的, 点分十进制的格式,(192.168.3.43)分为 4 段, 每段的范围是 0-255, 0.0.0.0 ~ 255.255.255.255公网 IP, 可以直接被别人使用访问的 ip(需要购买)局域网 ip(内网), 通…

WC2018集训 吉老师的军训练
WC2018集训 吉老师的军训练 #include<bits/stdc.h> #define RG register #define IL inline #define _ 200005 #define X 100000000 #define ll unsigned long long using namespace std;IL int gi(){RG int data 0 , m 1; RG char ch 0;while(ch ! - && (ch&…

一篇文章搞定Python全部基础知识
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 前言: 1、Python软件安装 第一章、字符串及数字变量 1、变量 要点提炼:Python变量为强类型动态类型。换言之,…

Java 时间和日期类型的 Hibernate 映射
以下情况下必须显式指定 Hibernate 映射类型一个 Java 类型可能对应多个 Hibernate 映射类型. 例如: 如果持久化类的属性为 java.util.Date 类型, 对应的 Hibernate 映射类型可以是 date, time 或 timestamp. 此时必须根据对应的数据表的字段的 SQL 类型, 来确定 Hibernate 映射…

idea springmvc_SSM三大框架使用Maven快速搭建整合(SpringMVC+Spring+Mybatis)
本文介绍使用SpringMVCSpringMyBatis三大框架使用Maven快速搭建一个demo,实现数据从数据库中查询返回到页面进行展示的过程。技术选型:SpringMVCSpringMyBatisMySqlMavenJSPIDEATomcat7JDK1.8Navicat for MySql下面开始搭建项目:一、数据库环…

欧拉函数+素数筛
欧拉函数,就是欧拉发现的一个关于求素数的的公式,然后我们编个函数实现这个公式。 欧拉发现求小于等于n的正整数中有多少个数与n互质可以用这个公式: euler(x)x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…(1-1/pn),其中p1,p2……pn为x的所有素因数&a…

对 Python 开发者而言,IPython 仍然是 Jupyter Notebook 的核心
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 Jupyter 项目提供的魔法般的开发体验很大程度上得益于它的 IPython 基因。 最近刚刚写过我为什么觉得觉得 Jupyter 项目(特别是 Jupy…

LintCode 249. 统计前面比自己小的数的个数
给定一个整数数组(下标由 0 到 n-1, n 表示数组的规模,取值范围由 0 到10000)。对于数组中的每个 ai 元素,请计算 ai 前的数中比它小的元素的数量。 注意事项 We suggest you finish problem Segment Tree Build, Segm…

springboot过滤器排除掉一些url_理解这9大内置过滤器,才算是精通Shiro
小Hub领读:权限框架一般都是一堆过滤器、拦截器的组合运用,在shiro中,有多少个内置的过滤器你知道吗?在哪些场景用那些过滤器,这篇文章希望你能对shiro有个新的认识!别忘了,点个 [在看] 支持一下…

安装APK,启动系统Activity
要同时设置data和type的话只能用函数setDataAndType private void installApk(File file) {Intent intent new Intent("android.intent.action.VIEW");intent.addCategory("android.intent.category.DEFAULT"); // intent.setData(Uri.fromFile(fi…

EOS能不能囤?一篇文章搞懂EOS优缺点
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 EOS是一个基于区块链的开发平台,专为构建去中心化应用程序(dApp)而设计。EOS是一个开源项目,其源代…

JS 中的事件设计
看懂此文,不再困惑于 JS 中的事件设计 原文出处: aitangyong 抽空学习了下javascript和jquery的事件设计,收获颇大,总结此贴,和大家分享。 (一)事件绑定的几种方式 javascript给DOM绑定事件处理函数总的来说有2种方式…

‘百度杯’十月场web ---login
首先一看的题,既然是是web类的,就要查看源码,一看,最先有一行注释,估摸着是用户名和密码 果然登录上去了,显示一段乱码,源码也没有什么东西, 那就抓一次包吧 发现响应头里边有个sho…

oracle 与 client端执行结果不一致_不同模式下Spark应用的执行过程
根据应用执行的3个阶段,不同执行模式下各个阶段的执行逻辑不相同,本文分析不同模式下的执行逻辑。Yarn-Client模式的执行流程Yarn的组成Yarn是hadoop自带的资源管理框架,它的设计思想是:YARN的基本思想是将资源管理和作业调度/监视…

分享EOS加拿大的文章《REX——从源代码做技术解析》
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 已提议将丢失密钥恢复系统部署到EOS主网。 丢失密钥解决方案的最后一步已经在链上提出。最后一步是将丢失密钥解决方案智能合约部署到为此目的创建…

16.QT鼠标
头文件 1 #include <QMouseEvent> 2 #include <QStatusBar> 3 #include <QLabel> 1 protected: 2 //鼠标按下 3 void mousePressEvent(QMouseEvent *e); 4 //鼠标移动 5 void mouseMoveEvent(QMouseEvent *e); 6 //鼠标释放 7 void …

c++ windows获得当前工作目录文件_基于linux下Python文件操作
Python中的文件操作1、文件的打开与关闭想一想:如果想用word编写一份简历,应该有哪些流程呢?1、打开word软件,新建一个word文件2、写入个人简历信息3、保存文件4、关闭word软件同样,在操作文件的整体过程与使用word编写…

maven 插件
maven-enforcer-plugin https://maven.apache.org/enforcer/maven-enforcer-plugin/ https://maven.apache.org/enforcer/maven-enforcer-plugin/enforce-mojo.html http://maven.apache.org/enforcer/enforcer-rules/index.html转载于:https://www.cnblogs.com/SamuelSun/p/58…

数字货币EOS半年时间暴跌90%多,还可追捧吗?
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 对财富上的自由,很多人认为这比感情来得容易多了。但是面对这个竞争激烈的社会,是兢兢业业的工作,还是投资房地产…
resnet keras 结构_Wandb用起来,一行Python代码实现Keras模型可视化
大数据文摘出品来源:wandb编译:邢畅、宁静在训练神经网络的过程中,我们可能会希望可视化网络的性能和中间的结构,很多可视化代码的冗长复杂使得我们望而却步,有没有一行代码就能解决可视化的所有问题呢?通过…

tensorflow学习笔记————分类MNIST数据集
在使用tensorflow分类MNIST数据集中,最容易遇到的问题是下载MNIST样本的问题。 一般是通过使用tensorflow内置的函数进行下载和加载, from tensorflow.examples.tutorials.mnist import input_data mnist input_data.read_data_sets("MNIST_data&q…

Build SSCLI20 under VS2008 full Document (完全手册)
以前build过几次sscli2都成功了,这次换了个新的环境,没想到出了一大堆的问题。折腾了半天,最终搞定,把解决问题的过程和方法都记录下来。 首先说说build的过程中参考过的链接和资源。 首先就是sscli自带的文档:Buildin…

vue 发展历程时间轴动画_PPT时间轴如何做出创意感?海量素材免费分享,网友:收藏...
时间轴页面,是工作型PPT中常见的页面之一。个人述职或者公司介绍PPT中,使用时间轴,能够让观众更加清晰地了解公司的发展历程。但是,很多人在制作时间轴页面时,往往是这样的效果:只有几行字和一根线…

[CQOI2014]数三角形 组合数 + 容斥 + gcd
推导过程 : 组合数容斥原理gcd 正确做法是暴力的一种优化,ans所有情况 - 平行坐标轴的三点共线 - 斜线三点共线 如果快速求斜线三点共线: 首先要知道一个结论,对于点(a,b) (x,y)连成的线段而言(其中a>x,b>y), 在…

石子合并[DP-N3]
题目描述 在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。 试设计出1个算法,计算出将N堆石子合并成1堆的最小得分和最大得分. 输入输出格式 输入格式&…