Untuk mereproduksi, mulai gunicorn seperti ini:
gunicorn -w 1 --max-requests=0 --max-requests-jitter=10 -b 0.0.0.0:8000 api:app
Kemudian arahkan beberapa lalu lintas ke sana dan amati output log berikut:
[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
Saya berharap --max-requests-jitter
tidak berpengaruh ketika --max-requests
disetel ke 0.
Apa perilaku yang Anda harapkan? Biasanya, max-requests=0
berarti bahwa pekerja tidak pernah memulai ulang secara otomatis tetapi dari log Anda tampaknya seperti itu.
Kesalahan ini telah diperkenalkan di d4e1bfe5bd7801c160282310875c70cec15b7c07:
Baris self.max_requests = cfg.max_requests + jitter or MAXSIZE
sekarang self.max_requests = cfg.max_requests + jitter or sys.maxsize
sejak e974f30517261b2bc95cfb2017a8688f367c8bf3 akan menetapkan self.max_requests
ke nilai _jitter_.
Kita harus benar-benar menetapkan self.max_requests
hanya jika nilai pengaturannya lebih besar dari 0.
@joekohlsdorf tambalan di atas seharusnya memperbaiki kesalahan tetapi beri tahu kami ...
Terima kasih, terlihat bagus untukku.
Komentar yang paling membantu
Kesalahan ini telah diperkenalkan di d4e1bfe5bd7801c160282310875c70cec15b7c07:
Baris
self.max_requests = cfg.max_requests + jitter or MAXSIZE
sekarangself.max_requests = cfg.max_requests + jitter or sys.maxsize
sejak e974f30517261b2bc95cfb2017a8688f367c8bf3 akan menetapkanself.max_requests
ke nilai _jitter_.Kita harus benar-benar menetapkan
self.max_requests
hanya jika nilai pengaturannya lebih besar dari 0.