2011-05-19 3 views
0

Je tente d'installer et de démarrer un serveur CherryPy en tant que service Windows.Installation et démarrage d'un script de serveur CherryPy en tant que service Windows (en utilisant sc.exe)

Voici le script: (. Suppression de quelques lignes pour couper court, il est tout à fait travailler manuellement lors de l'exécution de la ligne de commande)

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() 

J'utilise sc.exe pour installer et démarrer le service. L'installation se passe bien, mais je n'arrive pas à démarrer le service.

La commande est utilisée: (note il y a des espaces dans les êtes les chemins, mais je suis handeling cela avec des guillemets doubles, et le binPath travaille lors de l'exécution de sa chaîne manuellement via la ligne de commande)

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

> sc.exe start "ServiceName" 

Je continue à obtenir cette erreur, peu importe si vous tentez de démarrer le service à l'aide sc.exe ou par services.msc GUI:

[SC] StartService FAILED 1053: 

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

d'après ce que je comprends, cela est happenning parce python.exe ne le fait pas impl ement l'API du service Windows. Je ne souhaite pas créer un .exe à partir du script, en utilisant py2exe.

J'ai trouvé this answer qui suggère d'installer le service à l'aide de différents outils que sc.exe, appelé srvany.exe & instsrv.exe. Cependant, je ne peux pas les trouver dans le Win2K Resource Kit website.

Est-ce que quelqu'un sait comment installer & démarrez-le .py en tant que Windows avec succès?

Quelqu'un sait-il

Répondre

0

J'ai finalement utilisé ServiceInstaller aka SMaster, comme stated in this answer. L'URL dans la réponse donnée est cassée, et je n'ai pas pu trouver une URL fonctionnante. Je viens d'avoir srunner.exe disponible localement au préalable.

Notez qu'il y avait un autre obstacle à surmonter si, comme ServiceInstallerne peut pas gérer des fichiers avec des espaces dans leurs chemins. J'ai donc utilisé l'ancien formatage du chemin DOS pour l'enregistrement du service. Au lieu d'enregistrer C:\Program Files\MyApp\python.exe, j'ai enregistré C:\PROGRA~1\MyApp\python.exe.

1

Je préfère nssm pour installer des scripts normaux en tant que service. Vous pouvez copier le nssm.exe dans le répertoire C: \ Windows \ SysWOW64 en fonction de votre système: \ Windows \ system32 ou C. Après cela, vous êtes en mesure d'installer un service comme suit:

nssm install yourservicename 

Pour un script python vous devez définir le chemin d'application à votre python.exe et l'argument est votre auto script.

Basic configuration for nssm

Autres commandes communes pour démarrer/arrêter/modifier votre service sont:

nssm start yourservicename 
nssm stop yourservicename 
nssm edit yourservicename 
Questions connexes