AJAX-запросы не работают должным образом с gunicorn при выходе из сервера
Я сделал мое первое приложение django, развернутое на сервере в эти выходные. Было понятно, VPS сервер, поэтому мне нужно установить PostgreSQL, PostGIS, установить virtualenv и так далее. Требуется некоторое время, чтобы приложение работало.
На сервере разработки django все работает нормально, но когда я развернул свое приложение с gunicorn (работает с Nginx) на VPS-сервере, запросы AJAX не работали должным образом. У меня есть три запроса AJAX, отправленные сразу после другого. И только один или два запроса вернули значение. Поэтому я нашел gevent и этот поток ( запросы Django AJAX во время обычного запроса не проходят) и запустил gunicorn с помощью этой команды:
gunicorn myapp:wsgi:application --bind 0.0.0.0:9000 -k gevent --worker-connections 1001 --workers=3
и это работает. Все запросы возвращают значения и все выглядит нормально. Поэтому я перевел процесс в фоновый режим и вышел из системы с сервера.
Но каждый раз, когда я выхожу с сервера, запросы перестают работать. Поведение такое же, как в первый раз без Gevent. Может ли быть проблема активации виртуальной среды, настройки или это стандартное поведение Ubuntu как сервера?
Я даже не знаю, где мне найти решение, поэтому буду рад любой помощи.
2 ответа
Вы в настоящее время останавливаете процесс при выходе из системы. Вам нужен менеджер процессов, который контролирует процесс. Прочитайте документацию по gunicorn для множества возможных решений.
Я предлагаю вам использовать супервизор. Это удостоверится, что gunicorn работает, и перезапустится, если он выйдет из строя. Установите его с sudo apt-get install supervisor
Предположим, у вас есть веб-сайт под названием test, вы можете использовать следующее test.config
(внутри /etc/supervisor/conf.d/
)
[program:test]
directory=/home/test/www
command=/home/test/commands/start
user=nobody
autostart=true
autorestart=true
redirect_stderr=true
stopsignal=QUIT
stopasgroup=true
killasgroup=true
куда /home/test/www
местоположение вашего приложения django (вы можете изменить его, конечно), и /home/test/commands/start
это скрипт, в котором вы говорите gunicorn для запуска (команда, которую вы вставили).