【发布时间】:2010-08-19 17:17:56
【问题描述】:
我正在使用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" 消息之前到达?
更新:为更清晰而编辑。但现在答案似乎很明显——不可能。
【问题讨论】:
-
什么是“RPC”?你的意思是网络消息?您使用的是 TCP 套接字还是 UDP?不同的消息是通过 same 套接字还是不同的?您的协议是否允许异步响应?是否有任何中间件可以重新排序请求?如果您想要一个正确的答案而不是仅仅猜测可能不适用于您的情况,那么您必须更加具体。
标签: python concurrency twisted rpc consistency