Upstart für Pydoc-Webserver

Upstart für Pydoc-Webserver

Ich versuche, upstartden pydocWebserver für ein Paket, das ich entwickle, immer laufen zu lassen. Wenn ich ihn über die Befehlszeile ausführe:

pydoc -p 7464 /some_path/my_python_package

es funktioniert einwandfrei und wenn ich gehe, wird localhost:7464/my_python_packagedie Dokumentation angezeigt. Wenn ich es jedoch in ein Upstart-Skript einfüge, z. B.

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

Wenn ich dann den Browser öffne, localhost:7464/my_python_packageerhalte ich Folgendes:

no Python documentation found for 'my_python_package' 

Beachten Sie, dass localhost:7464alle Standard-Python-Pakete wie gewohnt angezeigt werden. Es scheint also, als würde Upstart den Pfad nicht richtig analysieren.

Ich habe versucht, „putting export PYTHONPATH='/some_path'in“ zu verwenden und die Ausführungszeile zu ändern, pydoc -p 7464 $PYTHONPATH/my_python_packageaber das hat auch nicht funktioniert.

Antwort1

Die Syntax, die Sie in diesem Job angegeben haben, ist falsch:

  • Sie haben mehrere ' start on' Strophen.
  • die letzte ' start on'-Strophe wird berücksichtigt, aber Ihre ist aufgrund der Verwendung von Kommas zwischen den Runleveln ungültig (Ihr ' stop on' ist aus demselben Grund ungültig).

Sie möchten so etwas:

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

script
    pydoc -p 7464 /some_path/my_python_package
end script

Beachten Sie, dass mit Version 0.9.7 und höher von Upstart (also Ubuntu Natty oder neuer - siehehttps://wiki.ubuntu.com/NattyNarwhal/TechnicalOverviewUpstart), gibt es einen neuen Befehl, init-checkconfder Ihr Skript auf Syntaxfehler überprüft. Die Verwendung ist einfach:

$ init-checkconf myjob.conf

Beachten Sie, dass Sie init-checkconfals Ihr Benutzer (nichtWurzel).

Führen Sie dies außerdem als Systemjob aus (die Jobdatei befindet sich in /etc/init/ ?) Wenn ja, müssen Sie den Dienst wirklich als Root ausführen? Wenn nicht, siehe:

http://upstart.ubuntu.com/cookbook/#run-a-job-as-a-different-user

Wenn ja, müssen Sie diesen Dienst wirklich als Root-Benutzer ausführen?

Abschließend möchte ich Ihnen dringend empfehlen, einen Blick auf den Rest des Upstart-Kochbuchs zu werfen:

verwandte Informationen