v5.2.0: waitress вместо app.run() — production WSGI, 8 потоков, исправляет ERR_TIMED_OUT
Deploy drhider / validate (push) Waiting to run

This commit is contained in:
2026-07-12 16:05:44 +04:00
parent 81bdee6203
commit d0e874d87e
4 changed files with 55 additions and 2 deletions
@@ -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** если меняет.