Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Ø;MQ多线程REQ/REP_Python_Zeromq - Fatal编程技术网

Python Ø;MQ多线程REQ/REP

Python Ø;MQ多线程REQ/REP,python,zeromq,Python,Zeromq,我正在尝试编写一个应用程序,允许用户启动长时间运行的计算过程,该过程将使用ØMQ从web服务器接收命令。我使用standart请求-应答体系结构:服务器有一个REQ套接字连接到一个worker进程REP套接字。从用户接收到新命令时,会将其发送到工作进程: self.instance_dict[instance_id].socket.send(json_command) result = self.instance_dict[instance_id].socket.recv() 当发送第二个命令

我正在尝试编写一个应用程序,允许用户启动长时间运行的计算过程,该过程将使用ØMQ从web服务器接收命令。我使用standart请求-应答体系结构:服务器有一个REQ套接字连接到一个worker进程REP套接字。从用户接收到新命令时,会将其发送到工作进程:

self.instance_dict[instance_id].socket.send(json_command)
result = self.instance_dict[instance_id].socket.recv()
当发送第二个命令而第一个命令仍在执行时,就会出现问题。
ØMQ是否提供了处理消息队列的功能,还是我自己没有实现它?或者我应该更改架构吗?

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

您可能希望改用推/拉方式—然后消息将自动排队,而不需要中间的回复(顺便说一句,我认为这也自动允许您使用多个工作线程进行扩展和负载平衡)

如果使用IOLoop,则可以设置ZMQStreams,以便在进程内对消息进行排队。 看