11

2013 年の投稿で、Gunicorn チームがスレッド化されたバッファリング レイヤー ワーカー モデルの構築を計画していたという記事を読んだことがあります。それは gthread async ワーカーが行うことですか? gthread ワーカーは、2014 年にバージョン 19.0 でリリースされました。

ウェイトレスには、要求をバッファリングするマスター非同期スレッドがあり、要求 I/O が終了すると、各要求をその同期ワーカー スレッドの 1 つにキューに入れます。

Gunicorn gthread には多くのドキュメントがありませんが、似ているように聞こえます。ドキュメントから:

ワーカー gthread はスレッド化されたワーカーです。メインループで接続を受け付け、受け付けた接続は接続ジョブとしてスレッドプールに追加されます。

私は Python の非同期 I/O コードについてあまり詳しくないので質問するだけですが、gthread.py をざっと読むと、ワーカー スレッドを長時間の I/O 要求から保護するソケット バッファリング プロセスであることがわかります (そして応答 I/O もバッファします)。

https://github.com/benoitc/gunicorn/blob/master/gunicorn/workers/gthread.py

4

2 に答える 2

1

Gunicorn のスレッド ワーカーは、I/O をバッファリングせず、メイン スレッドで要求本文を読み取りません。

メイン ループは呼び出しを非同期に処理しますaccept()[ 1 ] が、ソケットはすぐにスレッド プールに送信されます [ 2 ]。

于 2016-07-24T18:25:28.543 に答える