Advenedizo para el servidor web pydoc

Advenedizo para el servidor web pydoc

Estoy intentando utilizarlo upstartpara que el pydocservidor 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_packagese 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_packageme sale lo siguiente:

no Python documentation found for 'my_python_package' 

Tenga en cuenta que localhost:7464muestra 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_packagepero tampoco funcionó.

Respuesta1

La sintaxis que has especificado en ese trabajo es incorrecta:

  • tienes múltiples ' start on' estrofas.
  • start onse 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-checkconfque 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-checkconfcomo 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:

información relacionada