文档章节

Tornado Celery Redis实现异步

苏格兰雨季
 苏格兰雨季
发布于 2014/11/19 18:04
字数 242
阅读 476
收藏 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

没有更多内容

加载失败,请刷新页面

加载更多

tomcat 设置虚拟路径

Tomcat无法管理<Tomcat安装目录>/webapps目录以外的Web应用程序 在server.xml中配置虚拟目录 <Context path="/imgDetail" docBase="/pictureServer/img/resource"/> 配置前访问图片路径:h......

west_coast
23分钟前
0
0
数据结构

wu

盼望明天
37分钟前
3
0
Bash脚本输入参数的使用

Bash脚本输入参数的使用 Bash脚本传入的参数,在脚本中以位置的形式进行访问,即 $n 。例如,$1 为执行脚本的第一个参数,$2 为执行脚本的第二个参数。另外Bash中还提供了一些其它的便捷操作...

小陶小陶
54分钟前
3
0
多线程场景下,触发OOM的线程是否会影响其他线程的工作

public static void main(String[] args) { Thread t1 = new Thread(new Runnable() { @Override public void run() { int i = 0;......

麦馍
58分钟前
3
0
模拟Dubbo的zookeeper一致性Hash发现

接之前一篇<手写zookeeper来模拟dubbo的注册/发现>,使用一致性Hash来进行查找需要寻找的服务. Hash处理接口 public interface HashFunc { public Long hash(Object key);} 一致性Has...

算法之名
今天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部