Problemas com Starling/Workling no modo de produção
-
05-07-2019 - |
Pergunta
Eu tenho um aplicativo Rails que possui processamento assíncrono e estou tendo problemas para fazê -lo funcionar no modo de produção. Comecei a estrelar da raiz do aplicativo como assim:
starling -d -P tmp/pids/starling.pid -q log/
Então eu começo a trabalhar assim
./script/workling_client start -t
A primeira vez que corri isso, ele reclamou porque não havia banco de dados de desenvolvimento, então criei um banco de dados de desenvolvimento e esse erro desapareceu quando reiniciei o trabalho. Mas quando tento executar um processo assíncrono, recebo esta mensagem no log/produção.log
Workling::QueueserverNotFoundError (config/workling.yml configured to connect to queue server on localhost:15151 for this environment. could not connect to queue server on this host:port. for starling users: pass starling the port with -p flag when starting it.
Então eu corro
sudo killall starling
Em seguida, reinicie a estrela da raiz do aplicativo como este:
starling -d -P tmp/pids/starling.pid -q log/ -p 15151
O que parece funcionar bem, mas quando tento começar a trabalhar novamente com este script/workling_client Start -t, recebo esta mensagem no console
/var/rails-apps/daisi/vendor/plugins/workling/lib/workling/clients/memcache_queue_client.rb:68:in `raise_unless_connected!': config/workling.yml configured to connect to queue server on localhost:22122 for this environment. could not connect to queue server on this host:port. for starling users: pass starling the port with -p flag when starting it. If you don't want to use Starling, then explicitly set Workling::Remote.dispatcher (see README for an example) (Workling::QueueserverNotFoundError)
Então, tentei alterar o arquivo config/workling.yml dentro do plugin de trabalho para fazer com que a produção e o desenvolvimento ouçam em 15151, que não funcionaram, então tentei os dois em 22122, ainda sem dados, então tentei um aleatório Port, mas ainda dá exatamente o mesmo comportamento, não importa o que eu coloque no arquivo Workling.yml
Solução
A resposta é que Starling deve ser iniciado como tal:
RAILS_ENV=production ./script/workling_client start -t