Нужен ли Gunicorn для внутренних асинхронных микросервисов?
Насколько я читаю по всему Интернету, лучшая практика для развертывания приложений Flask/Django - это оставить позади веб-сервер, такой как nginx, и связать их с предварительно подготовленным сервером, таким как gunicorn или uWSGI.
Это хорошо по многим причинам, таким как ssl-завершение, защита от HTTP-атак (nginx), разветвление потоков для параллелизма, перезапуск приложения после утечки памяти или другие исключения (gunicron).
Я хочу развернуть микросервис внутреннего API на sanic с pm2, так как он не предназначен для клиентов, а скорее будет вызываться только из внутренних сервисов. SSH-завершение и защита от HTTP-атак не имеют значения, параллелизм гарантируется асинхронной природой sanic и перезапуск после исключения обрабатывается pm2.
Мне все еще нужны Gunicorn и Nginx? Разве я не могу просто запустить процесс приложения, как есть, и позволить ему напрямую общаться со своими абонентами?
1 ответ
Вам абсолютно не нужно иметь Gunicorn перед вашим стеком. Sanic может нормально работать, не имея перед собой веб-сервера, поскольку у него есть собственный внутренний сервер.
Я все еще рекомендовал бы использовать nginx для завершения TLS и для обработки статических файлов (даже если sanic может сделать оба из них), поскольку это эффективно.
вот ссылка на другой ответ, который я дал на тот же вопрос: https://community.sanicframework.org/t/gunicorn-uwsgi-vs-build-in-http-server/47/2?u=ahopkins
Тебе это не нужно. Посмотрите на http://supervisord.org/ чтобы запустить, перезапустить, автозапустить и т. Д. Ваши услуги.
Тем не менее, я использую Gunicorn и Supervisord в сочетании.