Задержать Gunicorn до полной загрузки Flask? - PullRequest
1 голос
/ 06 мая 2020

Я развертываю Flask API с Gunicorn в Google Cloud Run. Проблема, с которой я столкнулся, заключается в том, что моему приложению необходимо загрузить два больших кадра данных Pandas (это не подлежит обсуждению), что занимает несколько секунд. Проблема, с которой я столкнулся, заключается в том, что Cloud Run начнет направлять трафик c в контейнер, как только $PORT прослушивает, что означает, что первые несколько запросов получают очереди до тех пор, пока Flask не будет готов. Я пробовал использовать проверку работоспособности Docker, чтобы убедиться, что состояние контейнера не исправно до тех пор, пока Flask не будет готов, но Cloud Run игнорирует это.

Вопрос

Как я могу go об отсрочке привязки Gunicorn к порту прослушивания?

Я пробовал запускать Gunicorn с шаблоном фабрики приложений , а также более распространенным способом, и это ничего не дало. В настоящее время я лениво загружаю фреймы данных, что помогает, но лучшее, что я могу сделать, - это 2 секунды. Надеюсь, ответы будут связаны не с оптимизацией загрузки моего приложения, а с тем, как запретить Cloud Run доставлять трафик c в контейнер, пока я не буду к этому готов.

Edit

Использование флага --preload, похоже, помогает, за исключением того, что Cloud Run по-прежнему направляет трафик c в контейнер, прежде чем он будет готов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...