![Upstart для веб-сервера pydoc](https://rvso.com/image/1108669/Upstart%20%D0%B4%D0%BB%D1%8F%20%D0%B2%D0%B5%D0%B1-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0%20pydoc.png)
Я пытаюсь использовать upstart
так, чтобы pydoc
веб-сервер для пакета, который я разрабатываю, всегда запускался. Если я запускаю его из командной строки:
pydoc -p 7464 /some_path/my_python_package
он отлично работает и собирается localhost:7464/my_python_package
отображать документацию. Однако если я помещу его в скрипт upstart, например
start on startup
start on runlevel [2,3,4,5]
stop on runlevel [0,1,6]
script
pydoc -p 7464 /some_path/my_python_package
end script
затем, когда я открываю браузер, localhost:7464/my_python_package
я получаю следующее:
no Python documentation found for 'my_python_package'
Обратите внимание, что localhost:7464
все стандартные пакеты Python отображаются как обычно, поэтому, похоже, upstart неправильно анализирует путь.
Я пробовал использовать вставку export PYTHONPATH='/some_path'
и изменение строки выполнения, pydoc -p 7464 $PYTHONPATH/my_python_package
но это тоже не сработало.
решение1
Синтаксис, указанный вами в этом задании, неверен:
- у вас несколько
start on
строф. - последняя
start on
строфа ' ' будет рассмотрена, но ваша недействительна из-за использования запятых между уровнями выполнения (ваша 'stop on
' недействительна по той же причине).
Вам нужно что-то вроде этого:
start on runlevel [2345]
stop on runlevel [016]
script
pydoc -p 7464 /some_path/my_python_package
end script
Обратите внимание, что с версией Upstart 0.9.7 и выше (другими словами Ubuntu Natty или новее - см.https://wiki.ubuntu.com/NattyNarwhal/Технический обзорUpstart), есть новая команда, init-checkconf
которая проверит ваш скрипт на наличие синтаксических ошибок. Использование простое:
$ init-checkconf myjob.conf
Обратите внимание, что вы должны запустить его init-checkconf
как пользователь (неткорень).
Кроме того, вы запускаете это как системное задание (файл задания находится в /etc/init/ ?) Если да, вам действительно нужно, чтобы служба запускалась от имени root? Если нет, см.:
http://upstart.ubuntu.com/cookbook/#запустить-задание-как-другой-пользователь
Если это так, вам действительно нужно запускать эту службу от имени пользователя root?
Наконец, я настоятельно рекомендую вам ознакомиться с остальной частью кулинарной книги Upstart:
- HTML-версия:http://upstart.ubuntu.com/cookbook/
- PDF-версия:http://upstart.ubuntu.com/cookbook/upstart_cookbook.pdf