Установка и запуск серверного скрипта CherryPy в качестве службы Windows (с использованием sc.exe) - PullRequest
0 голосов
/ 19 мая 2011

Я пытаюсь установить и запустить простой CherryPy сервер в качестве службы Windows.

Вот скрипт: (Удалены некоторые строки, чтобы сократить его. Он полностью работает при выполнении вручную из командной строки)

app = AdminMediaHandler(django.core.handlers.wsgi.WSGIHandler())
logged_app = TransLogger(app)
server = wsgiserver.CherryPyWSGIServer( ('127.0.0.1', 8632), logged_app, server_name='localhost', numthreads=20 )

try:
    server.start()
except KeyboardInterrupt:
    server.stop()

Я использую sc.exe для установки и запуска службы. Установка идет нормально, но я не могу запустить службу.

Используемая команда: (обратите внимание, что в путях есть пробелы, хотя я разбираю это с двойными кавычками, и binPath работает при выполнении его строки вручную из командной строки)

> sc.exe create "ServiceName" binPath= "\"C:\Path to Python\python.exe\" \"C:\Path to CherryPy Script\cherryserver.py\""

> sc.exe start "ServiceName"

Я получаю эту ошибку, независимо от того, пытаюсь ли я запустить службу, используя sc.exe или через services.msc GUI:

[SC] StartService FAILED 1053:

The service did not respond to the start or control request in a timely fashion.

Насколько я понимаю, это происходит потому, что python.exe не реализует Windows Service API.

Я не хочу создавать .exe из скрипта, используя py2exe .

Я нашел этот ответ , который предлагает установить службу с использованием инструментов, отличных от sc.exe, называемых srvany.exe & instsrv.exe. Однако я не могу найти их на веб-сайте Win2K Resource Kit .

Кто-нибудь знает, как успешно установить и запустить .py в качестве Windows?

Кто-нибудь знает

Ответы [ 3 ]

5 голосов
/ 19 мая 2011

CherryPy поставляется с модулем для запуска в качестве службы Windows .См. этот другой вопрос SO для получения инструкций о том, как установить и запустить его.Возможно, вы захотите переключиться с вашего текущего подхода (передачи приложения Django непосредственно на WSGIServer) и использовать взамен cherrypy.tree.graft .

1 голос
/ 21 августа 2015

Я предпочитаю nssm для установки обычных скриптов в качестве службы.Вы можете скопировать nssm.exe в каталог C: \ Windows \ system32 или C: \ Windows \ SysWOW64 в зависимости от вашей системы.После этого вы можете установить Службу следующим образом:

nssm install yourservicename

Для сценария python вы должны указать путь к приложению, равный python.exe , и аргументом будет сам сценарий.

Basic configuration for nssm

Другие общие команды для запуска / остановки / редактирования вашей службы:

nssm start yourservicename
nssm stop yourservicename
nssm edit yourservicename
0 голосов
/ 20 мая 2011

Я в конечном итоге использовал ServiceInstaller он же SMaster , как указано в этом ответе . URL в данном ответе не работает, и я не смог найти работающий URL. У меня только что был srunner.exe доступный локально заранее.

Обратите внимание, что было еще одно препятствие, которое необходимо преодолеть, поскольку ServiceInstaller не может обрабатывать файлы с пробелами в их путях .

Итак, я использовал старое форматирование пути DOS для регистрации службы.

Вместо регистрации C:\Program Files\MyApp\python.exe я зарегистрировал C:\PROGRA~1\MyApp\python.exe.

...