тайм-аут приложения flask с балансировщиком нагрузки amazon
Я пытаюсь использовать приложение Flask за балансировщиком нагрузки Amazon, а потоки Flask продолжают тайм-аут. Похоже, что балансировщик нагрузки отправляет Connection: keep-alive
заголовок, и это приводит к тому, что процесс колбы никогда не возвращается (или занимает много времени). С gunicorn впереди процессы убиты и начались новые. Мы тоже пытались использовать на uwsgi и просто exposign приложение колбу напрямую (без обертки). Все это приводит к тому, что процесс колбы просто не отвечает.
Я ничего не вижу в документах колбы, которые заставили бы его игнорировать этот заголовок. Я в недоумении, что еще я могу сделать с флягой, чтобы решить проблему.
скручиваемость и прямые соединения с машиной работают нормально, только те через балансировщик нагрузки вызывают проблему. Сам балансировщик нагрузки, похоже, не делает ничего плохого, и мы успешно используем его с несколькими другими стеками.
4 ответов
решение у меня сейчас через gunicorn как обертка вокруг склянки. Для worker_class
Я использую eventlet
с несколькими работниками. Это сочетание кажется стабильным и отзывчивым. Gunicorn также настроен для HTTPS.
Я предполагаю, что это дефект в колбе, который вызывает проблему, и это эффективный обходной путь.
самый простой способ-заставить все соединения убедиться, что вы используете HTTP/1.0
и не добавляя заголовок Connection: Keep-Alive
ответ.
пожалуйста, заказ werkzeug.http.remove_hop_by_hop_headers()
.
вам нужен балансировщик нагрузки HTTP? Использование балансировщика уровня 4 может также решить вашу проблему, потому что это не мешает более высоким уровням протокола.