私は竜巻ioloop
と関連モジュールを読んで、ソケットが受け入れられ、要求が解析されて処理されたときに、竜巻が何をするのかを理解しています。トルネードはハンドラを処理している間にリモートクローズ接続をどのように処理するのですか?
要求接続が閉じられた後、竜巻が要求処理を停止することが可能かどうか知りたいですか?
は、私がテストハンドラを構築し、get
方法は、睡眠のための5秒を費やしている(time.sleeo(5))。
私は竜巻にいくつかのリクエストを送ります。すべてのリクエストは3秒間読み取りタイムアウトに設定されていますが、竜巻に接続して数分後に接続が正常に閉じられます。
私は5秒ハンドラが竜巻のイベントループを遅くしていると思います。竜巻が2番目のハンドラを処理すると、その接続は閉じられています。竜巻がそれを知っていれば、次に行う必要はありません。
ありがとうございました!もう2つの質問があります。 1.私のハンドラはブロッキングとして書かれていますが、ioloopをブロックすることはわかっています。ハンドラを実行する前に 'socket'の状態をチェックしました。空の文字列があれば、' socket'を 'MSG_PEEK'フラグで' recv'を呼び出してください。接続がリモートで閉じられていると思います、EAGAINまたはEWOULDBLOCK例外接続は生きている、これは私のために正しい? 2.私はすべての接続の受け入れ時間をログに記録したい、私は 'accept_handler'でログを追加するが、私はすべてのログ出力を1つずつ見つける、私は彼らが同時に表示されるべきだと思う。 – dawncold
MSG_PEEKトリックは、一度に1つの接続にしか対応していないのであればうまくいくかもしれませんが、閉鎖された接続が検出されるまで*長い時間がかかります。私はあなたの2番目の質問を理解していません(そして、新しい質問をコメントの代わりに新しい質問として尋ねる方が良いです)。 –