2017-02-13 29 views
0

Я сделал свое первое приложение django, развертываемое на сервере в эти выходные. Это был явный сервер VPS, поэтому мне нужно установить PostgreSQL, PostGIS, установить virtualenv и т. Д. Требуется некоторое время, чтобы приложения работали.Запросы AJAX не работают должным образом с помощью пушки, когда вышли из системы с сервера

На сервере разработки django все работает нормально, но когда я развернул свое приложение с помощью gunicorn (сотрудничает с Nginx) на сервере VPS, запросы AJAX не работают должным образом. У меня есть три запроса AJAX, отправляемых сразу после другого. И только один или два запроса вернули значение. Так что я нашел GEvent и эту нить (Django AJAX requests during regular request not going through) и запустить gunicorn с этой командой:

gunicorn myapp:wsgi:application --bind 0.0.0.0:9000 -k gevent --worker-connections 1001 --workers=3 

и она работает. Все запросы возвращают значения, и все выглядит нормально. Поэтому я перевел процесс на задний план и вышел из системы.

Но каждый раз, когда я выхожу с сервера, запросы прекращают работу. Поведение такое же, как и без gevent. Может быть проблема активации виртуальной среды, настройка или это стандартное поведение Ubuntu как сервера?

Я даже не знаю, где мне найти решение, поэтому я буду рад за любую помощь.

+0

Как вы положили процесс на задний план? Я предлагаю вам использовать супервизор, который будет запускать и перезапускать пушки, если это необходимо. –

+0

Нет, я просто представлю CTRL + Z и написал bg. Возможно, это плохо, как я вижу из ответа дарнов. Сервер и приложение все еще работают, но запрос не работает должным образом. Поэтому я не ожидал проблем с плохим помещением на задний план – Bulva

+0

Итак, если я хорошо понимаю, это потому, что gevent должен контролироваться Supervisor (или что-то в этом роде), и это причина, по которой приложение все еще работает, но запрос не является. – Bulva

ответ

1

В настоящий момент вы останавливаете процесс при выходе из системы. Вам нужен диспетчер процессов, который контролирует процесс. Прочтите gunicorn docs для множества возможных решений.

+0

Большое спасибо за ваш ответ. Я попробовал некоторые мониторы, но у меня мало времени, поэтому я продолжу сегодня по ночам. – Bulva

1

Предлагаю вам использовать supervisor. Он будет следить за тем, чтобы выстрелили, и перезагрузитесь, если он сработает. Установите его с sudo apt-get install supervisor

Давайте предположим, что у вас есть веб-сайт под названием тест, вы можете использовать следующие 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 является расположение вашего приложения Джанго (вы можете изменить его, конечно,), а /home/test/commands/start - это сценарий, в котором вы говорите, что пулемёт запускается (команда, которую вы вставляли).

+0

Большое спасибо. Я попробую сегодня – Bulva

+0

Это не работает. Я видел в документации, то это не для python 3. Извините за это. Я не писал эту информацию. Я продолжу поиск следующих параметров. – Bulva

+0

Supervisor не поддерживает python3, но ваш сайт может его использовать. Я использовал эту комбинацию раньше –