首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ZeroMQ、Redis和Gevent

ZeroMQ、Redis和Gevent
EN

Stack Overflow用户
提问于 2013-11-04 17:47:36
回答 3查看 2.4K关注 0票数 2

我正在开发一个服务器,它需要处理大量的小数据请求。

服务器使用ZeroMQ开发,使用拉/推模式。

基本上,每个请求进程都包含在Redis中存储其数据(消息)。

我希望通过使用gevent处理每个请求来获得更好的性能。

下面的代码不起作用(消息没有存储在Redis中)。

代码语言:javascript
复制
from gevent import monkey
monkey.patch_all()
from redis import Redis, StrictRedis
from redis import connection
import zmq
import gevent


context = zmq.Context()
socket = context.socket(zmq.PULL)
socket.bind("tcp://*:5000")

connection.socket = gevent.socket
redis = Redis()

def enqueue(message):
    redis.lpush('work_queue', message)


while True:
    message = socket.recv()
    #print message
    gevent.spawn(enqueue, message)

如果我删除gevent内容,那么代码就能工作(消息被正确地存储)。

我刚开始玩zeromq和gevent。

更新:我想实现一个简单的任务队列。最后用的是芹菜。服务器(使用zmq)异步启动芹菜任务(而且工作效果很好)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-07 18:59:49

要在gevent中使用zeromq,必须导入de zmq.green模块。

将zmq.green导入为zmq

http://zeromq.github.io/pyzmq/api/zmq.green.html

票数 2
EN

Stack Overflow用户

发布于 2013-11-05 04:53:12

您似乎没有启动事件循环。根据http://sdiehl.github.io/gevent-tutorial/的教程,尝试将生成的调用包装为gevent.joinall调用。那就试试看它是否有效。注意,这可能不是使用gevent的理想方式。但这应该是个开始。

票数 1
EN

Stack Overflow用户

发布于 2014-10-22 07:34:41

使用redis-py pyzmq,我编写了一个演示,gevent版本1.0.1,

参考文献:

(对不起,我的声誉不足10,我不能发布两个以上的链接):

带redis-py的with

使用zmq的gevent

引用链接仅显示在演示代码中:)

演示效果很好。[我的演示代码]

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19773843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档