0

そのため、TornadoからJavaScriptクライアントアプリケーションにデータをストリーミングするためにforever-frameを使用していますが、JavaScriptクライアントがデータの受信を停止することがあります。ハートビートメソッドを実装しました。ハートビートが失われたときにクライアントがフレームのURLを変更して接続を再開しますが、これは厄介なハックのように感じます---そして、ある程度のセットアップとティアダウンが必要です。接続が更新されると、アプリのUIで発生します。使用セッション全体で1つの永続的な接続になりたいと思います。

これは数分に1回の場合もあれば、5秒ごとに発生するループに陥っている場合もあります。私のブラウザはFirefoxとChromeです。

この問題の原因はどのようなものですか?デバッグの開始点についていくつかのアイデアが本当に必要です---レイテンシー、データフラッディング、接続不良を調べる必要がありますか?問題はトルネード側またはJavaScript側にある可能性が高いでしょうか?あるいは、JavaScriptアプリがそれ自体をより適切に再初期化できるようにすることに努力を費やしたほうがよいでしょうか?

4

1 に答える 1

0

あは。私はこれを理解しました。トルネードは並行性をうまく処理しません。問題は、私のロジックが複数のスレッド(インバウンドRPCによってトリガーされる)から長期間有効なRequestHandlerインスタンスを呼び出していて、それらが衝突すると、トルネードが異常終了して接続を閉じることでした。

修正は、add_callbackを使用して、IOLoopスレッド上のRequestHandlerインスタンスとの対話をキューに入れることでした。

tornado.ioloop.IOLoop.instance()。add_callback(do_stuff)

于 2011-06-29T15:19:33.587 に答える