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
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:
- Si no lo ha hecho todavía, instalar Cygwin. Durante el proceso de instalación, seleccione Python.
- Desde el terminal Cygwin, instale virtualenv como de costumbre.
Crear una virtualenv para supervisord y seguidamente coloque como de costumbre:
pip install supervisord
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).
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"
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.
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).
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
En ese caso, use un archivo bat, el comando sc y el programador del sistema para manejar un proceso 'asesinado'. Ver mi edición –
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.
El último TRONCO de honcho ahora tiene soporte para Windows :) usa y disfruta –
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
En realidad, honcho es más como capataz que supervisor. Ver también https://blog.codeship.com/using-honcho-create-multi-process-docker-container/ –
- 1. ¿Hay un análogo .NET para servidores de aplicaciones Java?
- 2. ¿Hay un análogo de spyOn en QUnit?
- 3. ¿Hay un análogo .net para las bibliotecas de Boost?
- 4. ¿Hay un análogo de C# de la clase java.util.Properties
- 5. Cómo supervisar los servicios de Windows
- 6. ¿Hay alguna herramienta para supervisar objetos de sincronización (mutex, eventos, semáforos) en Windows?
- 7. Un análogo de C++ FQA para C#
- 8. ¿Hay un análogo a Java IllegalStateException en Python?
- 9. ¿Hay un análogo en Scala para el método de "devolución" de Rails?
- 10. Crear una interfaz de usuario para supervisar e interactuar con un servicio de Windows en ejecución
- 11. cómo usar un script de shell para supervisar un programa?
- 12. un programa para supervisar un directorio en Linux
- 13. ¿Hay un buen cliente Fogbugz para Windows
- 14. ¿Hay un KornShell (ksh) IDE para Windows?
- 15. ¿Hay un reemplazo para cat en Windows
- 16. ¿Hay un compilador C portátil para Windows?
- 17. ¿Algún análogo de rsync para Ant?
- 18. ¿Hay un Emacs-análogo para el VI '.' comando a repeat-last-typed-text
- 19. ¿Hay una API de JavaScript para vincular XML, análogo a JAXB para Java?
- 20. ¿Cómo supervisar la ejecución del proceso/programa en Windows?
- 21. ¿Hay un equivalente de Windows para fdopen para HANDLEs?
- 22. Cómo supervisar un hilo de trabajo vital
- 23. ¿Hay ncurses disponibles para Windows?
- 24. ¿Hay un reemplazo para unistd.h para Windows (Visual C)?
- 25. Análogo IRB de python -i
- 26. ¿Hay algo como inotify en Windows?
- 27. Herramienta para supervisar HTTP, TCP, etc. Tráfico del servicio web
- 28. Supervisar múltiples aplicaciones de rieles
- 29. Biblioteca de scripts para supervisar el estado del servidor?
- 30. ¿Hay un controlador de vista previa VCL para Windows 7?
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