Python 通过流与服务器进行查询通信。正确的方法是什么?

Python 通过流与服务器进行查询通信。正确的方法是什么?,python,networking,twisted,Python,Networking,Twisted,我正在编写我的第一个网络应用程序。它操纵jabber客户端,并使用IQ节与某些服务进行通信。但细节并不重要 这种交互通过TwistedXMLStream(python语言)工作。这里描述了典型的情况:简而言之,我可以发送一个“查询”,服务器依赖于我的“结果” 我实现了一些基本操作,如“发送消息”、“对收到的消息执行操作”。问题在于使用流操作。使用延迟从服务器请求任何数据是否更好?如何将结果返回到需要的地方 您可以在此处查看我的代码: 我尝试将其简化。要将响应与回复配对,请使用iq.id属性。您可

我正在编写我的第一个网络应用程序。它操纵jabber客户端,并使用IQ节与某些服务进行通信。但细节并不重要

这种交互通过TwistedXMLStream(python语言)工作。这里描述了典型的情况:简而言之,我可以发送一个“查询”,服务器依赖于我的“结果”

我实现了一些基本操作,如“发送消息”、“对收到的消息执行操作”。问题在于使用流操作。使用延迟从服务器请求任何数据是否更好?如何将结果返回到需要的地方

您可以在此处查看我的代码:
我尝试将其简化。

要将响应与回复配对,请使用iq.id属性。您可以将一些延迟存储在按id索引的缓存中,并在收到回复时运行它们。因为XMPP是基于TCP的,所以您通常都会以正确的顺序得到回复。如果延迟缓存已在缓存中一段时间,您可以对缓存设置上限并运行延迟的errback。

获取响应的顺序与TCP流无关;这只能保证您按照它们到达服务器输出队列的顺序获取它们,但是线程服务器可能以任何顺序处理它们。