我正在嘗試使用upstart
以便pydoc
我正在開發的包的網頁伺服器始終運行。如果我從命令列運行它:
pydoc -p 7464 /some_path/my_python_package
它工作正常,並且將localhost:7464/my_python_package
顯示文件。但是,如果我把它放在一個暴發戶腳本中,例如
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/TechnicalOverviewUpstart),有一個名為的新命令init-checkconf
將檢查腳本是否有語法錯誤。用法很簡單:
$ init-checkconf myjob.conf
請注意,您必須init-checkconf
以您的用戶身份運行(不是根)。
另外,您是否將其作為系統作業運行(作業文件位於 /etc/init/ 中?)如果是這樣,您真的需要該服務以 root 身份運行嗎?如果沒有,請參閱:
http://upstart.ubuntu.com/cookbook/#run-a-job-as-a- Different-user
如果這是一個,您真的需要以 root 使用者身分執行該服務嗎?
最後,我強烈建議您看看《Upstart Cookbook》的其餘部分: