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!
- Mi sitio web está a punto de ser lanzado. Está construido en HTML, PHP y Javascript. ¿Cuáles son algunas medidas de seguridad que puedo tomar?
- Cómo integrar CKEditor con el modelo y vista Codeigniter
- Quiero entrar en la programación de servicios / aplicaciones web. ¿Dónde debo comenzar o qué temas debo analizar?
- Si quiero aprender solo un lenguaje de programación y uno para desarrollo web, ¿cuál debo elegir?
- Estoy interesado en el desarrollo web. ¿Cuál debería ser mi primer paso para ser un buen desarrollador?
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í.