1

У меня есть веб-сервер, основанный на комбинации колба + торнадо. Он работает внутри виртуальной среды (настроенной с помощью python virtualenv).

Я хочу, чтобы сервер запускался автоматически при запуске от обычного пользователя. Что я сделал, чтобы достичь этого:

1) я написал скрипт запуска со следующим содержанием:

cd /home/ubuntu/myserver
# enter virtualenv
source venv/bin/activate
# launch
python app.py > serverlog.log 2&>1 &

2) я установил crontab с помощью crontab -e как:

SHELL=/bin/bash
@reboot /home/ubuntu/start_service.sh

Когда я запускаю скрипт запуска из командной строки, все запускается правильно. Но после перезагрузки в serverlog.log я вижу трассировку стека, которая сообщает о невозможности привязки к порту 5000. Что я могу сделать, чтобы это исправить?

1 ответ1

1

Crontab недостаточно умен, чтобы поддерживать ваш сервер. Когда он отключается, он должен ждать, пока crontab снова не запустится; Ваши клиенты получат ошибку 404 от вашего неисправного сервера.

Я советую вам использовать что-то вроде Supervisor. Вы можете установить его, используя easy_install, как

   easy_install supervisor

Вам нужно будет разобраться с Supervisord и Supervisorctl. Первый - это менеджер процессов демона, который будет запускать и проверять PID от вашего

python app.py > serverlog.log 2&>1 &

продолжай бежать, несмотря ни на что. Вы сможете сделать это, создав так называемую программу на supervisord.conf, например:

[program:flasktornado]
command=python app.py > serverlog.log 2&>1 &

Supervisorctl - это то, как вы контролируете [начало | остановить | restart] программа, которую вы только что создали в файле конфигурации supervisord. Это может помочь вам.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .