Upstart para servidor web pydoc

Upstart para servidor web pydoc

Estou tentando usar upstartpara que o pydocservidor web de um pacote que estou desenvolvendo sempre rode. Se eu executá-lo na linha de comando:

pydoc -p 7464 /some_path/my_python_package

funciona bem e exibe localhost:7464/my_python_packagea documentação. No entanto, se eu colocá-lo em um script inicial, por exemplo

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

então, quando abro o navegador, localhost:7464/my_python_packagerecebo o seguinte:

no Python documentation found for 'my_python_package' 

Observe que isso localhost:7464mostra todos os pacotes python padrão normalmente, então parece que o upstart não está analisando o caminho corretamente.

Tentei inserir export PYTHONPATH='/some_path'e alterar a linha de execução para, pydoc -p 7464 $PYTHONPATH/my_python_packagemas também não funcionou.

Responder1

A sintaxe que você especificou nesse trabalho está incorreta:

  • você tem várias ' start on' estrofes.
  • a última start onestrofe '' será considerada, mas a sua é inválida devido ao uso de vírgulas entre os níveis de execução (sua ' stop on' é inválida pelo mesmo motivo).

Você quer algo assim:

start on runlevel [2345]
stop on runlevel [016]

script
    pydoc -p 7464 /some_path/my_python_package
end script

Observe que com a versão 0.9.7 e superior do Upstart (em outras palavras, Ubuntu Natty ou mais recente - consultehttps://wiki.ubuntu.com/NattyNarwhal/TechnicalOverviewUpstart), há um novo comando chamado init-checkconfque verificará se há erros de sintaxe em seu script. O uso é simples:

$ init-checkconf myjob.conf

Observe que você deve executar init-checkconfcomo seu usuário (nãoraiz).

Além disso, você está executando isso como um trabalho do sistema (o arquivo de trabalho reside em /etc/init/ ?) Em caso afirmativo, você realmente precisa que o serviço seja executado como root? Se não, veja:

http://upstart.ubuntu.com/cookbook/#run-a-job-as-a- Different-User

se for isso, você realmente precisa executar esse serviço como usuário root?

Por fim, eu recomendo fortemente que você dê uma olhada no restante do Upstart Cookbook:

informação relacionada