问题描述
我正在处理一个Python应用程序,该应用程序将返回一个json响应,其中包含来自过滤列表的文件列表。响应中的字符总数可能非常大,具体取决于过滤器(可能超过5000个),因此在测试期间,我得到了多个dataReceived()。
是否有一种方法可以使响应总数达到多少,这样,如果接收到一条完整的消息后,该响应结束于我知道的多个呼叫中,那么该怎么办?
数据格式为:
{
"files":
[
{
"name": "/etc/passwd","size": 1234
}
]
}
解决方法
您没有说,但我推断您是直接使用twisted.internet.protocol.Protocol
。这是Twisted给您的最直接的TCP访问。 TCP没有像您要求的那样的消息框架。如果您希望消息成帧,则必须选择一个提供它的高层协议(正确的解决方案)或自己构建(没有理由> 99%的时间这样做)。
Twisted具有许多更高级别的协议供您选择。我建议您看一下Twisted Web和HTTP。