Então, tenho um plugin que inicia o Ansible para realizar uma instalação do Discourse (eu realmente, realmente quero parar de usar o WordPress para gerenciar pedidos de instalação!).
Inicialmente, eu estava chamando fork para iniciá-lo, o que funcionou bem nos testes, mas pensei que deveria fazer isso de uma forma mais “Discourse Way”.
Então, criei um trabalho único para executar o processo, mas ele é encerrado da seguinte forma:
Tentei adicionar sidekiq_options queue: 'low' à classe e, em seguida, à função que executa o trabalho.
Depois, pulei a etapa de fazer o trabalho executar o processo e simplesmente o executei diretamente no modelo com:
Discourse::Utils.execute_command(*instructions)
Funciona perfeitamente se eu executá-lo a partir do rails c, mas, independentemente de como eu o execute (este é um ambiente de desenvolvimento Ubuntu, iniciado com ./bin/unicorn), ele é encerrado.
Trabalhos únicos são aqueles que serão executados apenas uma vez. Parece que o que você precisa é de um trabalho regular que será agendado por um gatilho, como uma requisição atingindo um controlador.
Trabalhos regulares podem durar mais de 60 segundos, como alguns fazem no uso normal.