再現するには、次のようにgunicornを起動します。
gunicorn -w 1 --max-requests=0 --max-requests-jitter=10 -b 0.0.0.0:8000 api:app
次に、トラフィックをそこに誘導し、次のログ出力を確認します。
[2019-02-05 20:27:23 +0000] [19] [INFO] Starting gunicorn 19.9.0
[2019-02-05 20:27:23 +0000] [19] [INFO] Listening at: http://0.0.0.0:8000 (19)
[2019-02-05 20:27:23 +0000] [19] [INFO] Using worker: sync
[2019-02-05 20:27:23 +0000] [22] [INFO] Booting worker with pid: 22
[2019-02-05 20:27:37 +0000] [22] [INFO] Autorestarting worker after current request.
[2019-02-05 20:27:37 +0000] [22] [INFO] Worker exiting (pid: 22)
[2019-02-05 20:27:37 +0000] [24] [INFO] Booting worker with pid: 24
--max-requests
が0に設定されている場合、 --max-requests-jitter
は効果がないと思います。
あなたが期待している行動は何ですか? 通常、 max-requests=0
は、ワーカーが自動再起動しないことを意味しますが、ログからは自動再起動するように見えます。
このエラーは、d4e1bfe5bd7801c160282310875c70cec15b7c07で導入されました。
e974f30517261b2bc95cfb2017a8688f367c8bf3がself.max_requests
を_jitter_値に設定するため、行self.max_requests = cfg.max_requests + jitter or MAXSIZE
はself.max_requests = cfg.max_requests + jitter or sys.maxsize
になります。
設定値が0より大きい場合にのみ、実際にself.max_requests
設定する必要があります。
@joekohlsdorf上記のパッチでエラーが修正されるはずですが、お知らせください...
ありがとう、私にはよさそうだ。
最も参考になるコメント
このエラーは、d4e1bfe5bd7801c160282310875c70cec15b7c07で導入されました。
e974f30517261b2bc95cfb2017a8688f367c8bf3が
self.max_requests
を_jitter_値に設定するため、行self.max_requests = cfg.max_requests + jitter or MAXSIZE
はself.max_requests = cfg.max_requests + jitter or sys.maxsize
になります。設定値が0より大きい場合にのみ、実際に
self.max_requests
設定する必要があります。