gpt4 book ai didi

sockets - 什么是python zeromq中的zmq.ROUTER和zmq.DEALER?

转载 作者:行者123 更新时间:2023-12-03 20:16:34 24 4
gpt4 key购买 nike

谁能告诉我zmq.sockets的类型是什么?

在什么情况下可以使用这些 socket ?

我需要的主要区别是python zeroMQ中的 zmq.DEALER zmq.ROUTER

哪种类型的 socket 可以使用这些 socket ?

最佳答案

DEALER和ROUTER是套接字,可以轻松缩放REQ/REP对。

在直接通信中,REQ和REP处于阻塞状态。

ROUTER-接受请求-来自REQ端

路由器能够接受请求,添加关于该被请求者的信息的信封,并通过互连代码使此新消息可用于进一步处理。当响应返回时(包围),它可以将响应传递回被请求者。

经销商-与 worker 交谈-代表方

经销商关心 worker 。注意,要使整个解决方案可用, worker 必须连接到经销商,而不是相反。

经销商还允许与REP进行非阻塞连接。

一些连接代码将信封中的请求传递给经销商。经销商管理此类请求向工作人员的分发(不包含信封),随后再响应互连代码(再次位于信封中)。

互连码

互连代码用于在ROUTER和DEALER套接字之间改组消息。

最简单的版本在这里:http://zguide.zeromq.org/py:rrbroker

# Simple request-reply broker
#
# Author: Lev Givon <lev(at)columbia(dot)edu>

import zmq

# Prepare our context and sockets
context = zmq.Context()
frontend = context.socket(zmq.ROUTER)
backend = context.socket(zmq.DEALER)
frontend.bind("tcp://*:5559")
backend.bind("tcp://*:5560")

# Initialize poll set
poller = zmq.Poller()
poller.register(frontend, zmq.POLLIN)
poller.register(backend, zmq.POLLIN)

# Switch messages between sockets
while True:
socks = dict(poller.poll())

if socks.get(frontend) == zmq.POLLIN:
message = frontend.recv_multipart()
backend.send_multipart(message)

if socks.get(backend) == zmq.POLLIN:
message = backend.recv_multipart()
frontend.send_multipart(message)

关于sockets - 什么是python zeromq中的zmq.ROUTER和zmq.DEALER?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23581172/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com