3

TornadoはノンブロッキングWebサーバーです。

ただし、すべての操作は単一のスレッドで実行されます。シングルスレッドで処理される場合、どのように非ブロッキングのままになりますか?

長時間の操作がある場合、新しいリクエストをブロックしますか?

Tornadoから大きなファイルをダウンロードするのは長いブロックプロセスですか?

私の理解が正確でない場合は、親切に訂正してください。

どうもありがとう

4

1 に答える 1

2

長時間の操作がある場合、新しいリクエストをブロックしますか?

はい。いいえ、状況によります。

トルネード自体の内部で発生するものはすべてブロックされます。したがって、「time.sleep(10)」を実行するか、計算量の多い操作を実行すると、ブロックされます。

Tornado(およびTwisted、node.js)がうまくできるのは、別のサービス(Amazon、Facebook、サブプロセス、非同期ライブラリを備えたデータベースなど)からデータを要求し、応答を待っている間に他の要求を処理することです。http://www.tornadoweb.org/documentation/overview.html#non-blocking-asynchronous-requestsを参照してください

これを行うには、前のサーバーも非同期である必要があります(つまり、ApacheではなくNginx)。

于 2012-08-21T07:26:27.427 に答える