我正在使用twisted来实现客户端和服务器。我在客户端和服务器之间设置了RPC。因此,在客户端上我执行protocol.REQUEST_UPDATE_STATS(stats)
,这转换为在客户端传输上发送带有transport.write
的邮件,该邮件是["update_stats", stats]
的某些编码版本。当服务器收到此消息时,将调用服务器协议上的dataReceived
函数,对其进行解码,并根据消息调用函数,如本例中的CMD_UPDATE_STATS(stats)
。
如果在客户端,我做了类似的事情:
protocol.REQUEST_UPDATE_STATS("stats1")
protocol.REQUEST_UPDATE_STATS("stats2")
...我保证"stats1"
消息在服务器上的"stats2"
消息之前到达吗?
更新:编辑更清晰。但现在答案显而易见 - 没办法。
答案 0 :(得分:1)
它们将按照Python进程收到请求的顺序到达。这包括连接建立时间加上包含请求数据的数据包。所以不,由于网络延迟,丢弃数据包,发送方数据包排队等原因,这不能保证发送进程发送请求的顺序。“顺序”也是分布式系统的松散定义。
但是,是的,一般情况下,只要它们被相对较长的时间(互联网上的100毫秒)分开,你就可以指望它们按顺序交付。