扭曲的 RPC 消息聚合



我正在使用一个python应用程序,该应用程序使用Twisted Perspective代理的callRemote在TCP连接上进行远程过程调用。从系统调用跟踪来看,来自发送方的多个远程过程调用似乎可以聚合到套接字上的单个 sendto() 调用中。在接收者的响应中也观察到了相同的行为。我会认为,只要套接字是可写的,并且有一些数据要发送,Perspective broker 就会在套接字上发送它。但情况似乎并非如此。

  1. Twisted 的透视代理是否出于特定原因将多个 RPC 消息聚合在一起,然后再将它们发送到套接字上?换句话说,Twisted是否在TCP中做了类似于Nagle算法的事情?

  2. 如果上述情况属实,是否有关闭此行为的选项?

Twisted 在底层 twisted.internet.abstract.FileDescriptor 对象中执行写入缓冲。 您可以尝试将 twisted.internet.abstract.FileDescriptor.SEND_LIMIT 属性更改为较小的属性,以强制它更频繁地写入套接字。

有关SEND_LIMITbufferSize属性的讨论,请参阅 Twisted bug 4089。

最新更新