2009-10-28 9 views
6

Je travaille actuellement sur un programme python qui s'exécute comme un service Windows en utilisant win32service et win32serviceutil. Le service s'exécute comme il se doit et même après l'utilisation de py2exe, tout va bien (le service surveille le (s) dossier (s) cible (s) et automatiquement les nouveaux fichiers FTP créés vers l'emplacement FTP spécifié). Je voudrais cependant ajouter quelques arguments de ligne de commande (en plus d'installer, supprimer, démarrer, arrêter, etc ...) pour spécifier les répertoires local et FTP. La seule documentation sur ce que j'ai trouvé à: http://www.py2exe.org/old/Arguments de commande personnalisée du service Python

« En option, vous pouvez spécifier un « cmdline-style » attribuer à py2exe, avec des valeurs valides étant « py2exe »(par défaut), « pywin32 » ou ' 'py2exe' spécifie la ligne de commande traditionnelle toujours supportée par py2exe 'pywin32' supporte les mêmes arguments de ligne de commande que pywin32 supporte (ie, les mêmes arguments supportés lors de l'exécution du service depuis le fichier .py). ' custom 'signifie que votre module est censé fournir une fonction' HandleCommandLine 'qui est responsable de tout le traitement de la ligne de commande. "

Toute aide serait appréciée pour être pointé dans la bonne direction. S'il vous plaît laissez-moi savoir si un code est nécessaire pour plus de clarté.

Merci, Zach

Répondre

3

here est un bel exemple de la façon de faire un service avec une coutume HandleCommandLine classmethod - il fait partie de pyro mais n'a pas de dépendances sur pyro, plutôt il est un utilitaire « de classe de base abstraite » qui Vous pouvez sous-classer et obtenir un service avec un minimum d'agitation en fixant juste quelques choses dans votre sous-classe. Pour vos besoins spécifiques, vous pouvez l'utiliser comme un modèle pour copier et éditer pour obtenir la gestion de la ligne de commande que vous voulez!

+0

Cela peut être exactement ce dont j'avais besoin, je le posterai après l'avoir appliqué à mon code. –

+0

C'était une solution intéressante. Fondamentalement, la classe de base abstraite, BasicNTService, reçoit les paramètres de service comme d'habitude (installer, supprimer, mettre à jour, etc ...). Ensuite, il y a une nouvelle invite sur la ligne de commande pour les paramètres supplémentaires qui sont stockés et récupérés via le registre. –