龙卷风 - 如何实现长轮询客户端

时间:2012-12-24 13:24:14

标签: python comet tornado long-polling

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

发生的事情是两件事之一:

  1. 客户端超时或
  2. 客户端在完成后立即收到所有消息 整个背景过程,类似于阻止过程
  3. 这是我使用的客户端:

    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服务器...我对整个长轮询过程有点新意总的来说。

1 个答案:

答案 0 :(得分:6)

龙卷风本身就是一个很好的聊天示例,建立在长轮询机制之上

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

它帮助我理解了一切,它同时拥有服务器和客户端。