ガンコーンとその非同期ワーカーを使用して長時間実行されるリクエストを処理しようとしていますが、動作する例が見つかりません。ここの例を使用しましたが、応答を返す前に偽の遅延 (5 秒間スリープ) を追加するように微調整しました。
def app(environ, start_response):
data = "Hello, World!\n"
start_response("200 OK", [
("Content-Type", "text/plain"),
("Content-Length", str(len(data)))
])
time.sleep(5)
return iter([data])
次に、gunicorn を実行します。
gunicorn -w 4 myapp:app -k gevent
2 つのブラウザ タブを開いてhttp://127.0.0.1:8000/
両方に入力し、リクエストをほぼ同時に送信すると、リクエストが順番に処理されているように見えます。1 つは 5 秒後に返され、もう 1 つはさらに5 秒後に返されます。
Q. 睡眠はイベントフレンドリーではないと思いますか? しかし、4 つのワーカーがあるため、ワーカーのタイプが「同期」であったとしても、2 つのワーカーが 2 つのリクエストを同時に処理する必要がありますか?