pydoc 網路伺服器的新貴

pydoc 網路伺服器的新貴

我正在嘗試使用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》的其餘部分:

相關內容