Así que tengo un plugin que inicia Ansible para realizar una instalación de Discourse (¡realmente, realmente, quiero dejar de usar WordPress para gestionar los pedidos de instalación!).
Inicialmente, llamaba a fork para iniciarlo, lo cual funcionaba bien en las pruebas, pero pensé que debería hacerlo de una manera más «a lo Discourse».
Así que luego creé un trabajo único para ejecutar el proceso, pero se mata de esta manera:
Intenté agregar sidekiq_options queue: 'low' a la clase y luego a la función que ejecuta el trabajo.
Luego omití que el trabajo ejecutara el proceso y simplemente lo ejecuté directamente en el modelo con:
Discourse::Utils.execute_command(*instructions)
Funciona perfectamente si lo ejecuto desde rails c, pero sin importar cómo lo ejecute (este es un entorno de desarrollo en Ubuntu, iniciado con ./bin/unicorn), se mata.
Los trabajos únicos son aquellos que solo se ejecutan, bueno, una vez. Parece que lo que necesitas es un trabajo regular que se programará mediante un disparador, como una solicitud que llega a un controlador.
Los trabajos regulares pueden durar más de 60 segundos, como ocurre con algunos en el uso normal.