2009-10-28 16 views
6

Actualmente estoy trabajando en un programa python que se ejecuta como un servicio de Windows que usa win32service y win32serviceutil. El servicio se ejecuta como debería e incluso después de usar py2exe, todo está bien (el servicio supervisa las carpetas de destino y automáticamente los archivos recién creados del FTP a la ubicación FTP especificada). Sin embargo, me gustaría agregar algunos argumentos de línea de comandos (además de instalar, eliminar, iniciar, detener, etc.) para especificar los directorios locales y FTP. La única documentación sobre este tema es lo que he encontrado en: http://www.py2exe.org/old/Argumentos del comando personalizado del servicio Python

"Opcionalmente, puede especificar un 'cmdline-estilo' atribuir a py2exe, con valores válidos ser 'py2exe' (por defecto), 'pywin32' o" custom '.' py2exe 'especifica la línea de comando tradicional siempre soportada por py2exe.' pywin32 'soporta exactamente los mismos argumentos de línea de comandos que pywin32 admite (es decir, los mismos argumentos soportados cuando se ejecuta el servicio desde el archivo .py)' 'personalizado' significa que se espera que su módulo proporcione una función 'HandleCommandLine' que es responsable de todo el manejo de línea de comandos. "

Cualquier ayuda sería apreciada en la dirección correcta. Por favor, avíseme si se necesita algún código para mayor claridad.

Gracias, Zach

Respuesta

3

here es un buen ejemplo de cómo hacer un servicio con una costumbre HandleCommandLine classmethod - es parte de piro, pero no tiene dependencias en piro, más bien es una utilidad de "clase base abstracta" que puede crear una subclase y obtener un servicio que funcione con el mínimo esfuerzo simplemente configurando algunas cosas en su subclase. Para sus necesidades específicas, ¡puede usarlo como una plantilla para copiar y editar para obtener el manejo de la línea de comando que desee!

+0

Esto puede ser justo lo que necesitaba, lo volveré a publicar después de que lo aplique a mi código. –

+0

Esta fue una solución interesante. Básicamente, la clase base abstracta, BasicNTService, recibe los parámetros de servicio de forma normal (instalar, eliminar, actualizar, etc.). Luego, hay un nuevo aviso en la línea de comando para parámetros adicionales que se almacenan y recuperan a través del registro. –

Cuestiones relacionadas