将SSE混合到龙卷风中

时间:2017-08-31 14:38:55

标签: python tornado

我正在尝试将旧版SSE服务器+ SSE客户端与龙卷风合并。 (从进程收集SSE并通过UDP套接字将它们分发给客户端的服务器)我们制作的第一个SSE GET请求完美运行。唯一的问题是当用户离开网络应用程序并返回时龙卷风被锁定。 Web应用程序永远不会再次加载。

我有一个非异步的RequestHandler,并使用客户端等待一段时间从非阻塞的python UDP套接字读取True循环。然后写入这些消息,并刷新到浏览器。浏览器成功接收SSE。

在我的RequestHandler中,永远不会调用on_connection_close和on_finish。这些应该停止客户端,并从while循环中断。这是因为我的请求不是协程吗?

在龙卷风中执行此操作的正确方法是什么?如果确实需要,我可以显示一个代码片段,但问题应该是自我解释的。

1 个答案:

答案 0 :(得分:0)

经过一些实验,我能够自己解决这个问题。

on_finish()从未被调用,因为我需要调用finish(),而on_connection_close()从未被调用,因为它不是一个协程。我可以使用关键字yield来解决我的问题。

可在此处找到更多信息:http://www.tornadoweb.org/en/stable/guide/coroutines.html