Cómo hacer que un programa Python se inicie en el mismo punto después de matarlo

Parece que estás hablando de Continuaciones. Hacer esto correctamente significa estructurar su código para asumir la capacidad de estado en todo momento. Es casi tan diferente de la programación funcional regular como otros paradigmas, como la paralelización.

Aquí hay un excelente ejemplo de Python: Continuaciones simplificadas e ilustradas. Supongo que podría intentar reinventar su propia solución, pero leí el artículo anterior un par de veces y probé algunos ejemplos primero. Definitivamente vale la pena aprender acerca de las continuaciones, incluso si decides que es demasiado para tu proyecto en particular.

En cuanto a salir / reiniciar, deberá manejar todas las formas en que su código puede salir, incluso las inesperadas (ejemplo: ¿Cómo capturo SIGINT en Python?), Y registrar el estado en algún lugar (sistema de archivos, base de datos, etc.). El sistema de archivos es probablemente lo suficientemente bueno para cosas de baja concurrencia, pero miraría una base de datos del almacén de claves como Redis si necesita escalar. ¡Más de un usuario o proceso puede causar problemas de bloqueo de archivos que te harán arrancarte el pelo!

Luego leería sobre las herramientas de monitoreo de procesos disponibles en su plataforma de destino, o miraría las herramientas populares como Circus, Supervisor o PM2 (orientado a node.js, pero admite muchas cosas). Tampoco reinventaría ninguna rueda aquí, ya que hay muchas herramientas buenas por ahí.

Si estoy interpretando su pregunta correctamente, además de reaparecer el proceso, también le gustaría que el nuevo proceso continúe desde donde lo dejó, lo que es un poco más complicado. Para hacer esto, necesita no solo tener un programa de vigilancia como dijo el respondedor anterior, sino también preservar una cierta cantidad de estado externo al programa. Esto se puede lograr guardando ocasionalmente alguna representación del estado del programa en una ubicación de almacenamiento predeterminada ( por ejemplo , una tabla en una base de datos, un archivo en una ruta absoluta). Cuando el programa de vigilancia mata y reinicia el programa, puede restablecerse a partir de ese estado respaldado. Sin embargo, hacer esto puede ser bastante complicado, especialmente cuando se trata de definir qué puntos en la ejecución del programa constituyen un estado recuperable, conocidos como puntos seguros. Una buena analogía (de hecho, casi exacta) para esto es “guardar puntos” en ciertos videojuegos. Si desea obtener más información al respecto, le recomendaría leer sobre operaciones transaccionales.

Básicamente, escribe un programa llamado Watchdog que obtiene el ID de proceso del programa Python que necesita reiniciar, una vez que ya no aparece en la lista, vuelve a ejecutar ese programa, el watchdog puede ser un temporizador o incluso un bucle

More Interesting

Si quiero ganar más dinero, ¿debo seguir mi camino actual como desarrollador front-end o debo seguir adelante y desarrollar algunas habilidades de gestión?

Acabo de crear mi blog sobre fotografía y pensamientos, y estoy buscando un alojamiento de WordPress compatible con fotos más grandes. ¿Donde puedo encontrarlos?

Soy un estudiante de ingeniería mecatrónica, también estoy interesado en el desarrollo web. ¿Es una pérdida de tiempo tomar el desarrollo web como una carrera secundaria?

Ayer descargué una nueva versión de Bootstrap. Hice cambios de CSS Bootstrap en una nueva hoja de estilo CSS. Pero cuando ejecuto el localhost en el navegador, no hay cambios. Antes de descargar una nueva versión de Bootstrap, los cambios aparecen cuando se ejecuta en localhost. ¿Hay alguna solución?

¿Por qué mi formulario de contacto PHP da estos errores?

Hice una copia de seguridad y restauración de una colección de sitios de SharePoint de una aplicación web a otra, ¿el sitio raíz tenía un formulario de ruta de información al que no se puede acceder ahora?

Cómo evitar que una parte de la página esté oculta por una barra estática con CSS

Soy un desarrollador Utilicé PHP durante 7 años, y ahora estoy trabajando en Node.js y Angular.js. ¿Qué debería aprender a continuación? ¿Qué opinas sobre Python?

Soy un buen desarrollador de pila completa. ¿Cómo puedo ganar 1000 $ rápidamente?

¿Qué sitios web has creado?

¿Qué necesito instalar en mi servidor para construir un sitio web en Python?

Yo soy un contador. ¿Cómo aprendo el script HTML y Java?

Me gustaría centrar verticalmente un elemento pequeño de altura fija en CSS lado a lado con un elemento de altura dinámica más grande de una manera que admita navegadores más antiguos. ¿Cómo hago esto?

Soy un desarrollador que se está volviendo independiente. ¿Cuál es mi mejor apuesta para tener éxito?

Estoy construyendo un sitio web que implicará trabajar con una gran base de datos. ¿Cuáles son las cosas que debo aprender para administrar la base de datos?