1

我正在使用twisted来实现客户端和服务器。我已经在客户端和服务器之间设置了 RPC。所以在我做的客户端上,这意味着在客户端传输上protocol.REQUEST_UPDATE_STATS(stats)发送一条消息,该消息是. 当服务器接收到这个消息时,服务器协议上的函数被调用,它解码它,并根据消息调用一个函数,就像在这个例子中一样。transport.write["update_stats", stats]dataReceivedCMD_UPDATE_STATS(stats)

如果在客户端上,我执行以下操作:

protocol.REQUEST_UPDATE_STATS("stats1")
protocol.REQUEST_UPDATE_STATS("stats2")

...我是否保证消息在服务器上的"stats1"消息之前到达"stats2"

更新:为更清晰而编辑。但现在答案似乎很明显——不可能。

4

1 回答 1

1

它们将按照 Python 进程收到请求的顺序到达。这包括连接建立时间加上包含请求数据的数据包。所以不,这不能保证是发送进程发送请求的顺序,因为网络延迟、丢弃的数据包、发送方数据包排队等。对于分布式系统也松散地定义了“按顺序”。

但是,是的,一般来说,只要它们相隔相对较长的时间(互联网上的 100 毫秒),您就可以指望它们按顺序交付。

于 2010-08-19T17:26:43.807 回答