Scheduler Resque no Heroku ... faça isso remotamente?
-
27-09-2019 - |
Pergunta
Estou adicionando Resque-Scheduler No meu aplicativo no Heroku
Então ... eu preciso de um trabalhador sozinho e distinto atuando como o agendador e muitos fazendo os empregos.
Foi assim que eu fiz:
Eu tenho um aplicativo Heroku distinto que não faz nada além de 1 trabalhador resque-scheduler, executando 24 horas por dia, 7 dias por semana, adicionando Resque tarefas para o Redis DB do "distante" a Principal Aplicativo.
(Eu faço esse mapeamento Empregos: trabalho tarefa para Resque: Scheduler ou Resque: trabalho)
Essa é a melhor maneira de fazê -lo na plataforma do Heroku; Ou estou fazendo isso totalmente errado?
Obrigado !
Editar: App mínimo para agendamento no Heroku:http://github.com/clmntlxndr/heroku-scheduler
ATUALIZAÇÃO: Com a nova pilha de cedro em Heroku e Procfiles, é possível iniciar uma tarefa distinta para cada trabalhador.
web: bundle exec rails server -p $PORT
scheduler: bundle exec rake resque:scheduler
worker: bundle exec rake jobs:work
Solução
Acho que interpretei mal sua pergunta pela primeira vez. Perdi a parte em que o agendador exige uma tarefa de rake separada.
Sim, acho que a única maneira de fazer isso é ter dois aplicativos Heroku separados, porque os trabalhadores da Heroku só funcionarão rake jobs:work
E presumivelmente você só pode mapear isso em uma das tarefas do Rake.
Você poderia tentar o seguinte:
desc "Alias for resque:work (To run workers on Heroku)"
task "jobs:work" => ["resque:work", "resque:scheduler"]
Mas tenho dúvidas sinceras sobre isso realmente funcionando corretamente com a forma como a Heroku monitora os processos e outras coisas dos trabalhadores. Além disso, verifique a sintaxe da rake lá; É apenas da memória. Eu sei que é possível especificar várias dependências.