2017-08-31 1 views
0

私は竜巻を持つ従来のSSE Server + SSEクライアントを組み込もうとしています。 (プロセスからSSEを収集し、UDPソケット経由でクライアントに配布するサーバー)私たちが作成した最初のSSE GET要求は完全に機能します。唯一の問題は、ユーザーがWebアプリから離れて戻るときに竜巻がロックされることです。 Webアプリケーションは決して2度目の読み込みを行いません。SSEをトルネードに混ぜる

私は非同期ではないRequestHandlerを持っていて、非ブロックのPython UDPソケットから真のループ読み取りを待つのにクライアントを使います。これらのメッセージは書き込まれ、ブラウザにフラッシュされます。ブラウザはSSEを正常に受信します。

私のRequestHandlerでは、on_connection_closeとon_finishは決して呼び出されません。これらはクライアントを停止させ、whileループから切り離すことになっています。これは私のリクエストがコルーチンではないからですか?

トルネードでこれを行う正しい方法は何ですか?本当に必要な場合はコードスニペットを表示できますが、その質問は自明である必要があります。

答えて

0

私は、いくつかの実験の後、自分でそれを理解することができました。

私はfinish()を呼び出す必要があるためon_finish()は呼び出されませんでした。また、on_connection_close()はコルーチンではないので呼び出されませんでした。キーワードyieldを使用して問題を解決できました。

詳細はこちら:http://www.tornadoweb.org/en/stable/guide/coroutines.html