Me gustaría algunas ideas sobre si usar fork {} para 'fondo' un proceso de una aplicación de rieles es una buena idea o no ...usando Kernel # tenedor para procesos de fondo, pros? ¿contras?
Por lo que doy cuenta fork {my_method; Process # setsid} de hecho hace lo que se supone que debe hacer.
1) crea otro procesos con un PID diferente
2) no interrumpe el proceso de llamada (por ejemplo, continúa w/o esperando el tenedor para terminar)
3) ejecuta el niño hasta termina
..que es genial, pero ¿es una buena idea? ¿Qué está haciendo exactamente el tenedor? ¿Crea una instancia duplicada de mi instancia completa mestizo/pasajero en la memoria? Si es así, eso sería muy malo. O, de alguna manera lo hace sin consumir una gran franja de memoria.
Mi objetivo final era acabar con mi sistema de fondo daemon/cola a favor de que se bifurcan estos procesos (envío de correos electrónicos principalmente) - pero si esto no va a salvar la memoria, entonces es definitivamente un paso en la dirección equivocada
Me quedaría con el sistema de colas. Si está utilizando un paquete bien mantenido para esto, no tendrá que preocuparse por los exploits de bombardeo de horquilla y los otros numerosos detalles necesarios para un buen sistema de cola. Esta es una instancia en la que debe tener cuidado de rodar su propio código a menos que haya una necesidad clara de hacerlo. –
servidor de cola ++. Puede que desee verificar MQ (http://github.com/mdarby/mq) para la cola de correo electrónico. Lo he usado en producción durante meses sin problemas. –