Pergunta

Eu usei Delayed_job no passado.Eu tenho um projeto antigo, que é executado em um servidor onde eu não posso actualizar a partir do Ruby 1.8.6 para 1.8.7, e, portanto, não pode usar Atrasada de trabalhos, então eu estou tentando BackgroundJobs http://codeforpeople.rubyforge.org/svn/bj/trunk/README

Eu tenho que trabalhar para que o meu trabalho é executado, mas algo não parece certo.Por exemplo, se eu executar o trabalho como este:

jobs = Bj.submit "echo hi", :is_restartable => false, :limit => 1, :forever => false

Então eu vejo o trabalho no bj_job tabela e vejo que concluiu, junto com 'oi' no stdout.Eu também vejo apenas um trabalho na tabela e não re-execução.

Por alguma razão, se eu fizer isso:

jobs = Bj.submit "./script/runner ./jobs/calculate_mean_values.rb #{self.id}", :is_restartable => false, :limit => 1, :forever => false

O trabalho ainda concluída conforme o esperado, no entanto, ele mantém a inserção de novas linhas no bj_job tabela, e o método é executado mais e mais até eu parar a minha dev server.É que, como ele é suposto para trabalhar?

Eu estou usando o Ruby 1.8.6 e Trilhos 2.1.2 e eu não tenho a opção de atualizar.Eu estou usando o plugin sabor de Bj.

Porque eu só preciso para executar o processo depois que o modelo é salvo, eu tenho que trabalhar usando o script/corredor diretamente como este:

system " RAILS_ENV=#{RAILS_ENV}   ruby  #{RAILS_ROOT}/script/runner   'CompositeGrid.calculate_values(#{self.id})'  & "

Mas gostaria de saber se estou fazendo algo de errado com Trabalhos em segundo Plano,

Foi útil?

Solução

OK, isso foi estúpido erro do usuário.Acontece que eu tinha um retorno de chamada que estava reiniciando o processo e criar um loop infinito.Depois de corrigir a chamada de volta, ele está funcionando exatamente como o esperado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top