У меня есть приложение Django, использующее gunicorn - теперь я хочу заменить его waitress. Достаточно легко, я установил официантку через apt-get install python-waitress
и запустил ее через waitress-serve --port=8080 myproject.wsgi:application
.Построение файла Upstart для python-waitress
Теперь я хочу настроить это для запуска через файл Upstart (я на Ubuntu). Я хочу, чтобы он работал на обычных уровнях выполнения 2, 3, 4 и 5 и сообщал, что он останавливается, когда он находится на любом другом уровне выполнения (например, при перезагрузке системы, завершении работы или в одиночном пользователе). Я также хочу, чтобы Upstart автоматически перезапустил службу, если она не удалась. И последнее, но не менее важное: мне нужно waitress
для работы на порту 80, а не в порту 8080.
Мои вопросы: как я могу создать свой файл Upstart для отражения этих требований? И любые другие включения, которые будут полезными дополнениями? Пожалуйста, порекомендуйте; это мой основной производственный сервер.
Во-вторых, согласно waitress
, кроме возможности использовать его с SSL, существуют ли преимущества использования обратного прокси-сервера (например, Nginx
) с waitress
? Мое приложение - это тяжелое веб-приложение Django, в котором пользователи собираются и общаются друг с другом.
Miki спасибо за пост на супервизора. Что касается nginx, как обратного прокси с официанткой, я задал этот вопрос, потому что (я) я прочитал этот пост, утверждая, что официантка - достаточно хороший автономный сервер производственного класса: http://blog.etianen.com/blog/2014/01/ 19/gunicorn-heroku-django /, и (ii) единственная причина, по которой кто-то упоминал об использовании nginx с официанткой, связан с поддержкой https: http://stackoverflow.com/questions/19462959/i-can-not-connect-to -https-waitress-wsgi-server –
Havent сам использовал официантку, однако я бы предположил, что nginx будет более высокой производительности, обслуживая статические файлы и другие вещи. nginx отлично подходит для балансировки нагрузки и т. д. Также у него есть некоторые базовые инструменты для защиты от DDOS и т. д. когда он может более эффективно управлять памятью. Но в конце дня, я думаю, вы должны использовать все, что работает для вас. Я бы дал nginx попробовать – miki725
Да, я принял ваш совет и глубоко погрузился в создание nginx + gunicorn. Все работает там, за исключением случаев, когда я пытаюсь получить доступ к некоторым записям DB, я получаю ** недопустимый синтаксис ввода для типа inet ** error. Если вы можете помочь, быстро взгляните на отдельные вопросы, которые я только что открыл: http://stackoverflow.com/questions/34238623/invalid-input-syntax-for-type-inet-db-error-in-django-app -с-Postgres-и-гу –