【问题标题】:Communicating to server with queries through stream. What is the right way?通过流与服务器进行查询通信。什么是正确的方法?
【发布时间】:2010-01-24 19:59:22
【问题描述】:

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

这种交互通过扭曲的 xmlstream(python 语言)进行。这里描述了典型的情况:http://juick.com/help/api/xmpp/ 简而言之,我可以发送一个“查询”,服务器依靠我的“结果”。

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

你可以在这里查看我的代码:http://bitbucket.org/boh/tmp/src/56c131cd1e62/juick_app/twisted_app.py 我试图让它变得简约。

【问题讨论】:

    标签: python networking twisted


    【解决方案1】:

    要将响应与回复配对,请使用 iq.id 属性。您可以将一些延迟存储在由 id 索引的缓存中,并在它们得到回复时运行它们。由于 XMPP 是基于 TCP 的,所以无论如何您都会以正确的顺序获得回复。如果 deferred 已经在缓存中一段时间​​,您可以限制缓存并运行 deferred 的 errback。

    【讨论】:

    • 获取响应的顺序与 TCP 流无关;这只是保证您按照它们到达服务器输出队列的顺序获取它们,但线程服务器可能会以任何顺序处理它们。
    • 因此我的“大部分”和关联缓存。
    猜你喜欢
    • 1970-01-01
    • 2019-11-30
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 2013-06-20
    相关资源
    最近更新 更多