【问题标题】:Tornado - How to implement long polling clientTornado - 如何实现长轮询客户端
【发布时间】:2012-12-10 21:55:42
【问题描述】:

我正在尝试在 Tornado 中实现长拉客户端,它与异步 Tornado 服务器交互。

会发生以下两件事之一:

  1. 客户端超时,或者
  2. 客户端完成后立即收到所有消息 整个后台进程,类似于阻塞进程

这是我使用的客户端:

from tornado import ioloop
from tornado import httpclient

print "\nNon-Blocking AsyncHTTPClient"
import tornado.ioloop

def async_call(response):
        if response.error:
                response.rethrow()
        print "AsyncHTTPClient Response"
        ioloop.IOLoop.instance().stop()

http_client = httpclient.AsyncHTTPClient()
http_client.fetch("http://localhost:9999/text/", async_call)
ioloop.IOLoop.instance().start()

这是编写长轮询/彗星客户端的正确方法吗?

我也很感谢那些回答在 Tornado 中提供示例异步服务器的人,因为可能是我错误地编写了彗星 Tornado 服务器...我对整个长轮询过程有点陌生一般。

【问题讨论】:

    标签: python comet tornado long-polling


    【解决方案1】:

    Tornado 本身有一个很好的聊天示例,建立在长轮询机制之上

    https://github.com/facebook/tornado/tree/master/demos/chat

    它对我理解一切有很大帮助,它同时具有服务器和客户端。

    【讨论】:

    • 感谢克莱格的回答。您提供的示例仅使用 Tornado 实现服务器端,而客户端使用 javascript。我希望客户端也用 Tornado 编写,而不是 javascript,它符合长轮询/彗星服务器实现。
    • 客户端将是一个桌面应用程序。
    • 嗯,来自 Tornado 的异步轮询也很简单。只需在 IOLoop 中使用 Tornado 的 AsyncHTTPRequest。我从我的项目中截取了示例:gist.github.com/4370563
    • 非常感谢您的帮助,我的朋友。我已经开始这样做了,特别是你传递的链接,我也会考虑你的其他建议和帮助:))。毕竟,我能说的是......圣诞快乐!祝大家好运!!
    • 只是为了让你认识我的朋友,我也开始研究 Websockets,它确实是比长轮询 http 更好的替代方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    • 2017-09-12
    • 1970-01-01
    相关资源
    最近更新 更多