Twisted RPC 消息聚合

Twisted RPC message aggregation

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

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

  2. 如果以上为真,是否有关闭此行为的选项?

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

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