Ответ 1
Нет. Связанный сервер является сервером разработки. Он не разработан с учетом производственных условий.
- По умолчанию не будет обрабатываться более одного запроса.
- Если вы оставите режим отладки включенным и появится всплывающее окно, оно откроет оболочку, позволяющую выполнить произвольный код на вашем сервере (подумайте
os.system('rm -rf /')
). - Сервер разработки недостаточно масштабируется.
Flask использует сервер разработки Werkzeug, и в документации написано то же самое:
Сервер разработки не предназначен для использования в производственных системах. Он был разработан специально для целей разработки и плохо работает при высокой нагрузке. Для установок развертывания просмотрите страницы Application Deployment.
Рекомендуемый подход - использовать сервер WSGI для производства для запуска приложения Flask. Там весь раздел посвящен развертыванию в документах: Параметры развертывания
Если вы используете какие-либо статические активы, такие как изображения или видео, необходимо кэширование низкого уровня или иметь более высокие требования concurrency, рекомендуется использовать веб-сервер, например nginx и обработать все ваши запросы.
В дрянной форме ASCII:
+----------+
| Client 2 |
+----------+
|
V
+----------+ +-------+ +----------+
| Client 1 |----->| nginx |<-----| Client 3 |
+----------+ +-------+ +----------+
^
|
V
/--------------------\
| useful nginx stuff |
| like asset serving |
| and rate limiting |
\--------------------/
|
V
+-------------+
| WSGI server |
+-------------+
Чтобы запустить сервер WSGI-процесс, вы можете использовать Supervisor. Он автоматически перезапускает сервер, если он по какой-то причине не работает, сохраняет журналы и запускается как демон, поэтому ваш сервис запускается при загрузке сервера.