Подтвердить что ты не робот

Каковы ограничения встроенного веб-сервера фляжки

Я новичок в администрировании веб-сервера. Я читал несколько раз, что флэшка встроенного веб-сервера не предназначена для "производства" и должна использоваться только для тестов и отладки...

Но что, если мое приложение касается только тысячи пользователей, которые иногда отправляют данные на сервер?

Если это сработает, когда мне придется беспокоиться о конфигурации более сложного веб-сервера? (Я ищу приближенные метрики).

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

Спасибо большое!

4b9b3361

Ответ 1

На этот вопрос нет правильного ответа, но вот несколько вещей, о которых следует помнить:

При правильном масштабировании по горизонтали вполне возможно, что вы сможете продолжать масштабирование использования сервера отладки навсегда. Когда именно вам потребуется начать масштабирование (или перейти на использование "настоящего" веб-сервера), это также будет зависеть от среды, в которой вы размещаетесь, ожиданий пользователей и т.д.

Основная проблема, с которой вы, вероятно, столкнетесь, заключается в том, что сервер является однопоточным. Это означает, что он будет обрабатывать каждый запрос по одному, последовательно. Это означает, что если вы пытаетесь обслуживать более одного запроса (включая значки, статические элементы, такие как изображения, файлы CSS и Javascript и т.д.), Запросы будут выполняться дольше. Если какой-либо заданный запрос занимает много времени (скажем, 20 секунд), тогда все ваше приложение не отвечает на это время (20 секунд). Конечно, это только значение по умолчанию: вы можете увеличить количество потоков (или обрабатывать запросы в других процессах), что может облегчить некоторые проблемы. Но еще раз, он все еще может быть медленным при "высокой" нагрузке. То, что считается "высокой" нагрузкой, будет зависеть от вашего приложения и ожиданий максимально приемлемого времени отклика.

Еще одна проблема - это безопасность: если вас беспокоит ВСЕ о безопасности (и не только о безопасности данных в самом приложении, но и о безопасности устройства, на котором оно будет запущено), вам не следует использовать сервер разработки. Он не готов противостоять какой-либо атаке.

Наконец, сервер разработки может просто выйти из строя. Он не предназначен для использования в качестве длительного процесса (дни, недели, месяцы), и поэтому он не был хорошо протестирован для работы в этом качестве.

Так что да, у него есть ограничения. Да, вы все еще можете использовать его в производстве. и да, я все равно рекомендовал бы использовать "настоящий" веб-сервер. Если вам не нравится идея установить что-то вроде Apache или Nginx, вы все равно можете воспользоваться решением, которое по-прежнему так же просто, как "запустить скрипт на python" с использованием некоторых автономных серверов WSGI, который может запускать сервер, предназначенный для работы, с чем-то таким же простым, как запуск python run_app.py в командной строке. Обычно вам просто нужно создать сценарий Python из 4-5 строк, чтобы импортировать и создать объект сервера, указать его на свой флакон app и запустить его.

gunicorn может быть запущен с использованием только следующего в командной строке, дополнительный сценарий не требуется:

gunicorn myproject:app

... где "myproject" - это пакет Python, который содержит объект app Flask. Имейте в виду, что один из разработчиков gunicorn, вероятно, рекомендовал бы против такого подхода. Смотрите https://serverfault.com/questions/331256/why-do-i-need-nginx-and-something-like-gunicorn.

Ответ 2

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