文档章节

Tornado Celery Redis实现异步

苏格兰雨季
 苏格兰雨季
发布于 2014/11/19 18:04
字数 242
阅读 420
收藏 0
点赞 0
评论 0

Celery中两个基本的概念:Broker、Backend

    Broker :其实就是一开始说的 消息队列 ,用来发送和接受消息。

    Broker有几个方案可供选择:RabbitMQ,Redis,数据库等

    Backend : 作用是保存结果和状态,可以是Database backend,也可以是Cache backend

    Backend有几个方案可供选择:http://docs.celeryproject.org/en/latest/configuration.html#celery-result-backend

安装:

pip install celery
pip install tornado-redis
yum install redis

示例:

  tasks.py

from time import sleep
from celery import Celery

backend = 'redis://127.0.0.1:6379/0'
broker = 'redis://127.0.0.1:6379/1'

app = Celery('tasks', backend=backend, broker=broker)

@app.task
def add(x, y):
	 sleep(10)
	 return x + y

运行服务:

celery -A tasks worker --loglevel=info

测试:

>>> from tasks import add
>>> r = add.delay(4, 4)
>>> r.ready() # 10s内执行,会输出False,因为add中sleep了10s,10s之后返回True
>>>False
>>> r.status #任务状态
'PENDING'
>>> r.result  # 输出你的hostname
>>>8
>>> r.status
'SUCCESS'

Tronado:

from concurrent.futures import ThreadPoolExecutor

class SleepHandler(tornado.web.RequestHandler):
    executor = ThreadPoolExecutor(2)
    @tornado.web.asynchronous
    @tornado.gen.coroutine
    def get(self):
        res = yield self.sleep(10,10)
        self.finish()

    @run_on_executor
    def sleep(x,y):
        time.sleep(5)
        return x+y


© 著作权归作者所有

共有 人打赏支持
苏格兰雨季
粉丝 1
博文 15
码字总数 2054
作品 0
东城
运维
tornado的异步库汇总- redis,mongo,celery,sockjs等

brukva -- redis异步库 https://github.com/kmerenkov/brukva toredis -- redis异步库 https://github.com/mrjoes/toredis/ tornado-redis -- redis异步库 https://github.com/leporo/tornad......

flyking
2014/02/26
0
0
分布式异步队列系统--thorns

thorns 是一个 Python 开发的分布式异步队列系统。 运行流程 启动redis内存服务器,作为队列存储数据库使用 配置芹菜(celery)运行环境,并连接redis队列内存,读取执行任务,并返回结果存储到...

匿名
2017/03/12
133
0
tornado 异步搭配的几个工具

https://github.com/leporo/tornado-redishttps://github.com/leporo/tornado-redis https://github.com/mher/tornado-celeryhttps://github.com/mher/tornado-celery http://www.tuicool.co......

MtrS
2015/06/05
0
0
tornado线程阻塞的解决

前言 也许有同学很迷惑:tornado不是标榜异步非阻塞解决10K问题的嘛?但是我却发现不是torando不好,而是你用错了. 比如最近发现一个事情:某网站打开页面很慢,服务器cpu/内存都正常.网络状态也...

单蛙
2016/06/17
272
0
使用tornado让你的请求异步非阻塞

前言 也许有同学很迷惑:tornado不是标榜异步非阻塞解决10K问题的嘛?但是我却发现不是torando不好,而是你用错了.比如最近发现一个事情:某网站打开页面很慢,服务器cpu/内存都正常.网络状态也良...

jack_cheng
2014/02/26
0
1
celery学习笔记2

1.定义: Celery是一个异步的任务队列(也叫做分布式任务队列) 2.工作结构 Celery分为3个部分 (1)worker部分负责任务的处理,即工作进程(我的理解工作进程就是你写的python代码,当然还包...

_周小董
01/05
0
0
tornado.gen.coroutine-编写异步函数

异步函数: 1. 返回Future 2. 必须有setresult( )或者setexception( )调用。 这里展示一个异步socket读取的例子: 首先定义一个定时返回的服务器,来模拟耗时的操作 from tornado.tcpserver...

Thinking--
2015/03/17
0
0
异步任务神器 Celery 简明笔记

Celery 在程序的运行过程中,我们经常会碰到一些耗时耗资源的操作,为了避免它们阻塞主程序的运行,我们经常会采用多线程或异步任务。比如,在 Web 开发中,对新用户的注册,我们通常会给他发...

funhacks
2017/11/29
0
0
异步任务神器 Celery 简明笔记

在程序的运行过程中,我们经常会碰到一些耗时耗资源的操作,为了避免它们阻塞主程序的运行,我们经常会采用多线程或异步任务。比如,在 Web 开发中,对新用户的注册,我们通常会给他发一封激...

_Change_
2017/10/24
0
0
43. Python celery简介

Celery异步分布式 什么是celery? 他是一个python开发的异步分布式任务调度模块 celery本身不提供消息服务,使用第三方服务,也就是broker来传递任务,目前支持rabbitmq,redis,数据库等等。...

ln286577399
2017/12/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

CDH的坑之Sqoop导出数据到MySQL

CDH的坑之Sqoop导出数据到MySQL 最近使用Sqoop从Hive导出数据到MySQL中,出现了一系列的问题,下面将这个问题记录一下,避免再度踩坑! 导出语句 sqoop export --connect jdbc:mysql://192....

星汉
4分钟前
0
0
Hyperledger Fabric 客户端开发三

前面两篇文章介绍了Hyperledger Fabric SDK并使用一个实例介绍如何通过SDK和Hyperledger Fabric Blockchain交互, 现在详细分析相关的过程。 首先看 enroll (登录) admin 过程。 'use stric...

十一月不远
4分钟前
0
0
PowerDesigner连接MySQL和逆向工程图

最近想梳理公司项目的表间关系,从项目后台管理系统的操作入手,以及代码的hibernate注解入手,都不算特别尽人意,于是最后还是鼓捣了一下PowerDesigner的逆向工程图,这样更直观一些。 想着...

Oo若离oO
5分钟前
0
0
威胁web应用安全的错误

一般绝大部分的web应用攻击都是没特定目标的大范围漏洞扫描,只有少数攻击确实是为入侵特定目标而进行的针对性尝试。这两种攻击都非常频繁,难以准确检测出来,许多网站的web应用防火墙都无法...

上树的熊
7分钟前
2
0
pypy2 install crypto error

install pycryptodome instead pip install pycryptodome

coord
11分钟前
0
0
Service Mesh所应对的8项挑战

Lori Macvittie 微服务架构是把双刃剑,我们享受它带来的开发速度(development velocity),却也不得不面对服务间通讯带来的复杂性问题。 目前大多数扩展容器化微服务的架构多是基于proxy-b...

好雨云帮
20分钟前
0
0
时间复杂度

1. 维基上的定义 在计算机科学中,算法的时间复杂度是一个函数,它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低...

liuyan_lc
26分钟前
0
0
js中的~符

~是js里的按位取反操作符,~~就是执行两次按位取反,其实就是保持原值,但是注意虽然是原值,但是对布尔型变量执行这个操作,会转化成相应的数值型变量,也就是 ~~true === 1,~~false === 0...

JamesView
27分钟前
0
0
webpack安装

npm install --save-dev webpack-cli

Vincent-Duan
29分钟前
0
0
实时监听EditText内容变化

主要是addTextChangedListener方法的使用 aswerEdittext.addTextChangedListener(new TextWatcher() { //编辑框的内容发生改变之前的回调方法 @Override public void before...

王先森oO
32分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部