pydoc 웹서버의 시작

pydoc 웹서버의 시작

제가 개발하고 있는 패키지의 웹서버가 항상 실행 upstart되도록 사용하려고 합니다 . pydoc명령줄에서 실행하는 경우:

pydoc -p 7464 /some_path/my_python_package

잘 작동하고 localhost:7464/my_python_package문서가 표시됩니다. 그러나 이를 시작 스크립트에 넣으면 다음과 같습니다.

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

그런 다음 브라우저를 열면 localhost:7464/my_python_package다음이 표시됩니다.

no Python documentation found for 'my_python_package' 

localhost:7464모든 표준 Python 패키지가 정상적으로 표시되므로 upstart가 경로를 올바르게 구문 분석하지 않는 것 같습니다 .

export PYTHONPATH='/some_path'실행 줄을 넣고 변경해 보았지만 pydoc -p 7464 $PYTHONPATH/my_python_package이것도 작동하지 않았습니다.

답변1

해당 작업에 지정한 구문이 올바르지 않습니다.

  • start on' ' 스탠자가 여러 개 있습니다 .
  • 마지막 ' start on' 스탠자가 고려되지만 런레벨 사이에 쉼표를 사용하기 때문에 귀하의 스탠자가 유효하지 않습니다(' stop on'도 같은 이유로 유효하지 않습니다).

당신은 다음과 같은 것을 원합니다 :

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

script
    pydoc -p 7464 /some_path/my_python_package
end script

Upstart 버전 0.9.7 이상(즉, Ubuntu Natty 이상 - 참조)https://wiki.ubuntu.com/NattyNarwhal/TechnicalOverviewUpstartinit-checkconf), 스크립트에 구문 오류가 있는지 확인하는 새로운 명령이 있습니다 . 사용법은 간단합니다:

$ init-checkconf myjob.conf

사용자 init-checkconf(~ 아니다뿌리).

또한 이것을 시스템 작업으로 실행하고 있습니까(작업 파일은 /etc/init/에 있습니까?) 그렇다면 루트로 실행하려면 서비스가 정말로 필요합니까? 그렇지 않은 경우 다음을 참조하세요.

http://upstart.ubuntu.com/cookbook/#run-a-job-as-a-다른-사용자

그렇다면 해당 서비스를 루트 사용자로 실행해야 합니까?

마지막으로 Upstart Cookbook의 나머지 부분을 살펴보는 것이 좋습니다.

관련 정보