Python 在调用Tornado服务器时保持ajax调用活动
我正在尝试编写我的第一个tornado应用程序。Python 在调用Tornado服务器时保持ajax调用活动,python,comet,nonblocking,tornado,Python,Comet,Nonblocking,Tornado,我正在尝试编写我的第一个tornado应用程序。 tornado的示例显示了下面的代码,但是,似乎一旦“MainHandler”函数返回,客户端与此服务器之间的连接就会丢失。 我希望服务器在数据可用时持续推送数据。 如何保持管道畅通 在客户端,我想做一个ajax调用。这样行吗? 我认为一旦接收到数据,ajax调用就结束了 Facebook确实说,客户端使用tornado与服务器保持线程打开,因此我知道这是可以做到的,我想我正在努力实现一些简单的概念 import tornado.ioloop
tornado的示例显示了下面的代码,但是,似乎一旦“MainHandler”函数返回,客户端与此服务器之间的连接就会丢失。 我希望服务器在数据可用时持续推送数据。
如何保持管道畅通 在客户端,我想做一个ajax调用。这样行吗?
我认为一旦接收到数据,ajax调用就结束了 Facebook确实说,客户端使用tornado与服务器保持线程打开,因此我知道这是可以做到的,我想我正在努力实现一些简单的概念
import tornado.ioloop
import tornado.web
import time
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("What happens after this call ?")
# while(True): time.sleep(5) <push more data># This would be ugly.. plus blocking(correct ?)
application = tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
导入tornado.ioloop
导入tornado.web
导入时间
类MainHandler(tornado.web.RequestHandler):
def get(自我):
self.write(“这次通话后会发生什么?”)
#while(对):时间。睡眠(5)#这会很难看。。加上阻塞(正确吗?)
application=tornado.web.application([
(r“/”,主处理器),
])
如果名称=“\uuuuu main\uuuuuuuu”:
申请。听(8888)
tornado.ioloop.ioloop.instance().start()
我的理解中缺少什么?如果要保持连接打开,您可能需要使用websocket。比如:
LISTENERS = []
class RealtimeHandler(tornado.websocket.WebSocketHandler):
def open(self):
LISTENERS.append(self)
def on_close(self):
LISTENERS.remove(self)
application = tornado.web.Application([
(r'/', RealtimeHandler),
])