【问题标题】:ØMQ multithreaded REQ/REPØMQ多线程REQ/REP
【发布时间】:2011-09-22 22:49:56
【问题描述】:

我正在尝试编写一个应用程序,允许用户启动长时间运行的计算过程,该过程将使用 ØMQ 从 Web 服务器接收命令。我使用标准的请求-回复架构:服务器有一个连接到工作进程 REP 套接字的 REQ 套接字。当收到来自用户的新命令时,它会被发送到工作进程:

self.instance_dict[instance_id].socket.send(json_command)
result = self.instance_dict[instance_id].socket.recv()

当第一个命令仍在执行时发送第二个命令时会出现问题。 ØMQ 是否提供了处理消息队列的功能,还是我自己没有实现它?还是我应该改变架构?

【问题讨论】:

    标签: python zeromq


    【解决方案1】:

    对于 REQ/REP,在第一个命令被确认之前,第二个命令不得发送; ZMQ 强制协议中消息的正确排序。

    您可能想改用 PUSH/PULL - 消息将自动排队,而无需在两者之间回复(顺便说一句,我认为这也自动允许您使用多个工作人员进行扩展和负载平衡)。

    如果您使用 IOLoop,您可以设置 ZMQStreams,它将在进程中排队消息。 见https://github.com/zeromq/pyzmq/blob/master/zmq/eventloop/ioloop.py

    【讨论】:

      猜你喜欢
      • 2014-10-11
      • 2016-11-17
      • 2014-01-03
      • 1970-01-01
      • 2020-07-17
      • 2013-06-07
      • 1970-01-01
      • 2017-02-13
      • 1970-01-01
      相关资源
      最近更新 更多