TornadoはノンブロッキングWebサーバーです。
ただし、すべての操作は単一のスレッドで実行されます。シングルスレッドで処理される場合、どのように非ブロッキングのままになりますか?
長時間の操作がある場合、新しいリクエストをブロックしますか?
Tornadoから大きなファイルをダウンロードするのは長いブロックプロセスですか?
私の理解が正確でない場合は、親切に訂正してください。
どうもありがとう
TornadoはノンブロッキングWebサーバーです。
ただし、すべての操作は単一のスレッドで実行されます。シングルスレッドで処理される場合、どのように非ブロッキングのままになりますか?
長時間の操作がある場合、新しいリクエストをブロックしますか?
Tornadoから大きなファイルをダウンロードするのは長いブロックプロセスですか?
私の理解が正確でない場合は、親切に訂正してください。
どうもありがとう
長時間の操作がある場合、新しいリクエストをブロックしますか?
はい。いいえ、状況によります。
トルネード自体の内部で発生するものはすべてブロックされます。したがって、「time.sleep(10)」を実行するか、計算量の多い操作を実行すると、ブロックされます。
Tornado(およびTwisted、node.js)がうまくできるのは、別のサービス(Amazon、Facebook、サブプロセス、非同期ライブラリを備えたデータベースなど)からデータを要求し、応答を待っている間に他の要求を処理することです。http://www.tornadoweb.org/documentation/overview.html#non-blocking-asynchronous-requestsを参照してください
これを行うには、前のサーバーも非同期である必要があります(つまり、ApacheではなくNginx)。