v5.2.0: waitress вместо app.run() — production WSGI, 8 потоков, исправляет ERR_TIMED_OUT
Deploy drhider / validate (push) Waiting to run
Deploy drhider / validate (push) Waiting to run
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
# Ответ Соннета — ERR_TIMED_OUT (2026-07-12)
|
||||
|
||||
## Причина
|
||||
|
||||
Werkzeug dev server: **один поток на TCP-соединение**. Браузер держит 6 keep-alive соединений на вкладку. 6 потоков заняты idle-соединениями → backlog (5) переполнен → новое окно получает SYN-дроп → таймаут.
|
||||
|
||||
gunicorn+gevent: async I/O, idle-соединения не занимают ресурсы.
|
||||
|
||||
## Решение
|
||||
|
||||
Три варианта:
|
||||
|
||||
| Вариант | Что | Изменения |
|
||||
|---|---|---|
|
||||
| A (waitress) | Pure Python WSGI | `requirements.txt` + 2 строки в `app.py` |
|
||||
| B (gevent) | Async, как gunicorn | `requirements.txt` + 2 строки в `app.py` |
|
||||
| C (gunicorn) | Точно как v1 | `requirements.txt` + смена CMD в Штурвале |
|
||||
|
||||
Соннет рекомендует: **A** если Штурвал не меняет CMD, **C** если меняет.
|
||||
Reference in New Issue
Block a user