![Upstart para servidor web pydoc](https://rvso.com/image/1108669/Upstart%20para%20servidor%20web%20pydoc.png)
Estou tentando usar upstart
para que o pydoc
servidor 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_package
a 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_package
recebo o seguinte:
no Python documentation found for 'my_python_package'
Observe que isso localhost:7464
mostra 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_package
mas 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 on
estrofe '' 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-checkconf
que verificará se há erros de sintaxe em seu script. O uso é simples:
$ init-checkconf myjob.conf
Observe que você deve executar init-checkconf
como 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:
- Versão HTML:http://upstart.ubuntu.com/cookbook/
- Versão PDF:http://upstart.ubuntu.com/cookbook/upstart_cookbook.pdf