- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在我的服务器之间建立一个基于事件的系统。例如,当包装我的数据库逻辑的服务器更改状态时,我希望它通知我的其他服务器。发布/订阅设计似乎很适合这个,我听说过有关 ZeroRPC 的好消息。
有些人提到使用 zerorpc 流来完成发布/订阅,但是我不清楚如何使用流来触发事件。
最佳答案
在 dotCloud,我们通过 zerorpc 流使用了大量发布/订阅。让我描述一下我们的做法。
总之
我们公开了一个用@zerorpc.stream 修饰的流方法。调用此方法时,会将 gevent.queue 添加到集合中。然后该方法将永远循环,产生到达队列的每条消息。当此方法终止时(因为客户端断开连接),队列从集合中移除。
要发布,只需在集合中注册的每个队列上发布要发布的消息。此时,您必须决定要对缓慢的消费者采取什么措施(断开它们的连接,将它们排队到一定的限制和/或丢弃新消息)。
使用 zerorpc-python 的实现示例:
订阅部分
class MyService(object):
def __init__(self):
self._subscribers = set()
@zerorpc.stream
def subscribe(self):
try:
queue = gevent.queue.Queue()
self._subscribers.add(queue)
for msg in queue:
yield msg
finally:
self._subscribers.remove(queue)
...Queue(maxsize=42)
。
class MyService(object):
[...]
def _publish(self, msg):
for queue in self._subscribers:
if queue.size < 42:
queue.put(msg)
关于zeromq - ZeroRPC 发布订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11979319/
我想在我的服务器之间建立一个基于事件的系统。例如,当包装我的数据库逻辑的服务器更改状态时,我希望它通知我的其他服务器。发布/订阅设计似乎很适合这个,我听说过有关 ZeroRPC 的好消息。 有些人提到
我正在为一个项目使用 ZeroRPC,其中可能有多个实例在同一台机器上运行。出于这个原因,我需要能够自动分配未使用的端口号。我知道如何使用 socket.bind(('', 0)) 使用常规套接字或使
因此,我正在为一个宠物项目使用 ZeroRPC 和 Tornado,在将 ZeroRPC 与 python 的多处理库结合使用时遇到了一些问题。具体来说,我正在以编程方式创建和运行新的 ZeroRPC
我正在使用 Python 2.7 和 zeroRPC使客户端和服务器进行通信。我希望客户端向服务器发送请求,我希望服务器发送响应以确认它已收到请求。但后来我希望服务器对该请求执行一些繁重的计算。这些计
我正在尝试从 ZeroRPC website 运行 Python 服务器/node.js 客户端 HelloWorld 示例。所有相关的库似乎都已正确安装,但是在运行示例时出现错误: { name:
您可能知道,ZeroRPC 文档很少。我无法在 Python 服务器和 Node 客户端之间进行 Streaming 工作。 这是Python方法: @zerorpc.stream def Publi
目前,我正在使用 ZeroRPC,我让“工作人员”连接到“服务器”并执行服务器发送给他们的工作。 目前,只要有调用,就会通过 ZeroRPC 进行调用,据我所知,它使用的是 FIFO 队列。 我想使用
我正在用 python 设计一个简单的分布式数据库。我考虑用 ZeroRPC 实现通信层。 key 查找是通过 DHT 协议(protocol)以 req/rep 模式实现的。但是,我还希望能够通过键
我真的很想使用优秀的 zerorpc对于我使用 IronPython 的项目,但它似乎不受支持。 我已经尝试下载 zerorpc 的源代码 zip 并运行 "C:\Program Files (x86
我有一个 Electron 应用程序前端 (zerorpc-node) 与 python 后端 (zerorpc-python) 通信,需要: a) 能够向后端发送请求[标准zerorpc调用] b)
我正在尝试使用 ZeroRPC python 服务器和 node.js 客户端进行一些简单的负载测试。我注意到,如果请求花费的时间超过 10 秒,我将得不到任何数据。我尝试在python代码中配置无心
如何使用我的 zerorpc 维护不同的 session 或本地状态服务器? 例如(下图),如果我有多个客户端,后续客户端将覆盖模型状态。我考虑过每个客户端都有一个 ID,RPC 逻辑将尝试以这种方式
我一直在尝试在 Ubuntu 上安装 ZeroRPC。我已经安装了 ZeroMQ,但在安装 ZeroRPC 时出现了这些错误。我基本上是在后台从 node.js 运行一个 python 脚本,它发送
我的代码比这多得多,所以我将其精简到看起来相关的部分。根据记录的示例,我有一个供 ZeroRPC 使用的 python 类: import zerorpc, sys, signal class MyC
我需要安装 zerorpc .正如文档中提到的,我首先安装了 zeromq然后尝试了这个命令:npm install -g zerorpc但我收到此错误:- C:\WINDOWS\system32>n
我的设置有一个 Node.js 子 Node ,它创建了一个带有 Python 对象的 2-way ZeroRPC session 对。 python端类似这样: class MyClass:
我需要从 nodejs 调用一个 python 脚本并取回结果。我找到了 zerorpc看起来很合适的库。 python 脚本返回一个字符串数组,但在 Node 中我得到了二进制数据的对象。 这是 p
我正在尝试使用 Node.js 设置 zerorpc。但是,即使安装了 zerorpc 后,我仍然收到错误: Exception: ReferenceError: Can't find variabl
我想尝试 zeroRPC 但无法正确安装包。我在 Windows 7 下使用最新的 python_xy 发行版(python 2.7.3),我必须说我没有太多安装新模块的经验,因为发行版已经非常完整。
由于历史原因,我们正在使用 Heroku,我有一个非常棒的基于 ZeroRPC 的服务器,我很乐意将它放在 Heroku 服务上。对于这些基于“云”的平台所施加的限制,我有点天真,但大多数不允许打开任
我是一名优秀的程序员,十分优秀!