Python Twisted在API上返回了大量但未知的数据

问题描述

我正在处理一个Python应用程序,该应用程序将返回一个json响应,其中包含来自过滤列表的文件列表。响应中的字符总数可能非常大,具体取决于过滤器(可能超过5000个),因此在测试期间,我得到了多个dataReceived()。

是否有一种方法可以使响应总数达到多少,这样,如果接收到一条完整的消息后,该响应结束于我知道的多个呼叫中,那么该怎么办?

数据格式为:

{
    "files":
    [
       {
           "name": "/etc/passwd","size": 1234
       }
    ]
}

解决方法

您没有说,但我推断您是直接使用twisted.internet.protocol.Protocol。这是Twisted给您的最直接的TCP访问。 TCP没有像您要求的那样的消息框架。如果您希望消息成帧,则必须选择一个提供它的高层协议(正确的解决方案)或自己构建(没有理由> 99%的时间这样做)。

Twisted具有许多更高级别的协议供您选择。我建议您看一下Twisted Web和HTTP。