2011-10-02 17 views
21

Necesito ejecutar el script de python y me aseguro de que se reiniciará cuando finalice. Sé que hay una solución UNIX llamada supervisord. Pero desafortunadamente el servidor donde se debe ejecutar mi script está en Windows. ¿Sabes qué herramienta puede ser útil? Gracias¿Hay un análogo de Windows para supervisar?

Respuesta

32

A pesar de la gran declaración de exención de responsabilidad here, puede ejecutar Supervisor con Cygwin en Windows; resulta que Cygwin hace un gran esfuerzo para simular un entorno de Posix, tan bien que supervisord se ejecuta sin cambios. No es necesario aprender una nueva herramienta, e incluso ahorrará bastante trabajo si necesita implementar un proyecto complicado en múltiples plataformas.

Aquí está mi receta:

  1. Si no lo ha hecho todavía, instalar Cygwin. Durante el proceso de instalación, seleccione Python.
  2. Desde el terminal Cygwin, instale virtualenv como de costumbre.
  3. Crear una virtualenv para supervisord y seguidamente coloque como de costumbre:

    pip install supervisord 
    
  4. Configurar supervisord de la forma habitual. Tenga en cuenta que supervisord se ejecutará con Cygwin, por lo que es mejor usar rutas de la manera Cygwin (C: \ myservers \ project1 se traduce a/cygdrive/c/myservers/project1 en Cygwin).

  5. Ahora es probable que desee instalar supervisord como un servicio. Así es como lo hago:

    cygrunsrv --install supervisord --path /home/Administrator/supervisor/venv/bin/python --args "/home/Administrator/supervisor/venv/bin/supervisord -n -c /home/Administrator/supervisor/supervisord.conf" 
    
  6. ir al administrador de servicios de Windows e iniciar el servicio supervisord que acaba de instalar.

El punto 5 instala supervisión como un servicio de Windows, para que pueda controlarlo (iniciar/detener/reiniciar) desde el administrador de servicios de Windows. Pero las cosas que puede hacer con supervisorctl funcionan como siempre, lo que significa que puede simplemente implementar su archivo de configuración anterior.

+3

Un aviso corto: es 'supervisor de instalación pip 'ahora y requiere Python 2.4+ pero no lo hace trabaja con cualquier versión 3+. – Peon

9

Es probable que desee ejecutar su secuencia de comandos como Windows Service. Para hacerlo, necesitará la biblioteca python-win32. Este question tiene una buena descripción de cómo hacer esto, así como una serie de enlaces a otros recursos relacionados. Este question también puede ser de utilidad.

A Windows Service es cómo desea cerrar cualquier script que necesite ejecutarse continuamente en Windows. Se pueden configurar para que se inicien automáticamente al arrancar y para manejar fallas. Nada evitará que nadie mate el proceso en sí, pero para manejar esa situación potencial, puede simplemente crear un archivo bat y usar el comando sc para polarizar el servicio para ver si se está ejecutando y si no reiniciar el servicio. Simplemente programe el archivo bat para que se ejecute cada 60 segundos (o lo que sea razonable para que su script esté potencialmente inactivo).

+0

Ejecutar el script de Python como servicio de Windows hará que solo se ejecute en segundo plano. No es suficiente. Mi objetivo es hacer que el script se ejecute irrompible. El script debe reiniciarse incluso si alguien lo mata. – pss

+0

En ese caso, use un archivo bat, el comando sc y el programador del sistema para manejar un proceso 'asesinado'. Ver mi edición –

5

Si quieres un gestor de procesos supervisord similar que se ejecuta en la mayor parte del sistema operativo POSIX y está basado en Python como supervisord, entonces usted debe buscar en el mero mero que es un puerto de Python de capataz (Rubí-based):

http://pypi.python.org/pypi/honcho/

Funciona muy bien en mac, Linux pero (en realidad) todavía no windows ... (editando mi respuesta inicial donde había dicho optimistamente que ya estaba trabajando en Windows basado en una solicitud de extracción que se ha descartado desde)

Hay una horquilla que proporciona compatibilidad con Windows aquí https://github.com/redpie/honcho y algunos trabajos en progreso para soportar Windows aquí https://github.com/nickstenning/honcho/issues/28 ... al menos podría convertirse en una posible solución en un futuro cercano.

También hay una horquilla de capataz para Windows compatible aquí: https://github.com/ddollar/foreman-windows que puede estar funcionando para usted, aunque nunca lo intenté.

Así que, por ahora, un servicio de Windows podría ser su mejor opción a corto plazo.

+3

El último TRONCO de honcho ahora tiene soporte para Windows :) usa y disfruta –

+0

Hola, lil 'pregunta sobre Honcho: ¿se supone que realmente debe reiniciar tareas fallidas, como supervisor? No sucede cuando 'mato 'a uno. Entonces, ¿tenemos que usar una combinación de supervisor y honcho? Gracias. – Ehvince

+0

En realidad, honcho es más como capataz que supervisor. Ver también https://blog.codeship.com/using-honcho-create-multi-process-docker-container/ –

Cuestiones relacionadas