Как прогреть веб-сервис django перед открытием для публики? - PullRequest
2 голосов
/ 27 сентября 2019

Я запускаю веб-приложение django на AWS ecs.

Я бы хотел прогреть сервер (нажмите первый запрос, и для загрузки django потребуется некоторое время) при развертывании новой версии.

Есть ли способ прогревасервер перед регистрацией его в балансировщике нагрузки приложения?

  • Редактировать

Я использую nginx + uwsgi

1 Ответ

1 голос
/ 27 сентября 2019

Я предположил, что вы используете mod_wsgi, потому что это поведение, описанное здесь :

Q: Why do requests against my application seem to take forever, but then after a bit they all run much quicker?

A: This is because mod_wsgi by default performs lazy loading of any application. That is, an application is only loaded the first time

при получении запроса, который нацелен на это приложение WSGI.Это означает, что эти первоначальные запросы повлекут за собой загрузку всего кода приложения и выполнение любой инициализации при запуске.

This startup overhead can appear to be quite significant, especially if using Apache prefork MPM and embedded mode. This is

, поскольку затраты на запуск возникают для каждого процесса, а с помощью prefork MPM обычно намного большеобрабатывает это, используя рабочий режим MPM или mod_wsgi daemon.Таким образом, столько запросов, сколько существует процессов, будут выполняться медленно, и все будет работать на полной скорости только после загрузки кода.

Note that if recycling of Apache child processes or mod_wsgi daemon processes after a set number of requests is enabled, or for

встроенный режим Apache решает сам пожинать любые дочерние процессы, а затем выможет периодически видеть, что эти отложенные запросы происходят.

Some number of the benchmarks for mod_wsgi which have been posted do not take into mind these start up costs and wrongly try to compare

результаты для других систем, таких как fastcgi или прокси-системы, где код приложения будет предварительно загружен по умолчанию.В результате mod_wsgi выглядит хуже, чем на самом деле.Если mod_wsgi настроен правильно, результаты будут лучше, чем показано в этих тестах.

For some cases, such as when WSGIScriptAlias is being used, it is actually possible to preload the application code when the processes

при первом запуске, а не при поступлении первого запроса.Для предварительной загрузки приложения см. Директиву WSGIImportScript.

Я думаю, вы можете попытаться использовать WSGIScriptAlias подробнее здесь

...