![Advenedizo para el servidor web pydoc](https://rvso.com/image/1108669/Advenedizo%20para%20el%20servidor%20web%20pydoc.png)
Estoy intentando utilizarlo upstart
para que el pydoc
servidor web de un paquete que estoy desarrollando siempre se ejecute. Si lo ejecuto desde la línea de comando:
pydoc -p 7464 /some_path/my_python_package
Funciona bien y al ir a localhost:7464/my_python_package
se muestra la documentación. Sin embargo, si lo pongo en un script advenedizo, por ejemplo
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
luego, cuando abro el navegador localhost:7464/my_python_package
me sale lo siguiente:
no Python documentation found for 'my_python_package'
Tenga en cuenta que localhost:7464
muestra todos los paquetes estándar de Python con normalidad, por lo que parece que el advenedizo no está analizando la ruta correctamente.
Intenté usar poner export PYTHONPATH='/some_path'
y cambiar la línea de ejecución, pydoc -p 7464 $PYTHONPATH/my_python_package
pero tampoco funcionó.
Respuesta1
La sintaxis que has especificado en ese trabajo es incorrecta:
- tienes múltiples '
start on
' estrofas. start on
se considerará la última ' ' estrofa, pero la suya no es válida debido al uso de comas entre niveles de ejecución (su 'stop on
' no es válida por el mismo motivo).
Quieres algo como esto:
start on runlevel [2345]
stop on runlevel [016]
script
pydoc -p 7464 /some_path/my_python_package
end script
Tenga en cuenta que con la versión 0.9.7 y superior de Upstart (en otras palabras, Ubuntu Natty o posterior; consultehttps://wiki.ubuntu.com/NattyNarwhal/TechnicalOverviewUpstart), hay un nuevo comando llamado init-checkconf
que verificará su secuencia de comandos en busca de errores de sintaxis. El uso es simple:
$ init-checkconf myjob.conf
Tenga en cuenta que debe ejecutar init-checkconf
como su usuario (noraíz).
Además, ¿está ejecutando esto como un trabajo del sistema (el archivo de trabajo se encuentra en /etc/init/?) Si es así, ¿realmente necesita que el servicio se ejecute como root? Si no, consulte:
http://upstart.ubuntu.com/cookbook/#run-a-job-as-a-diferente-usuario
Si esto es así, ¿realmente necesita ejecutar ese servicio como usuario root?
Finalmente, recomiendo encarecidamente echar un vistazo al resto del Upstart Cookbook:
- Versión HTML:http://upstart.ubuntu.com/cookbook/
- Versión PDF:http://upstart.ubuntu.com/cookbook/upstart_cookbook.pdf