Upstart для веб-сервера pydoc

Upstart для веб-сервера pydoc

Я пытаюсь использовать 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:

Связанный контент