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 для запуска (команда, которую вы вставили).

Другие вопросы по тегам