[i-Diario] - Como inicializar a sincronização com o i-Educar (sidekiq) após o reinicio do computador

Caros,

Como faço para inicializar o sidekiq após a inicialização do servidor ou vps? Tentei utilizar o crontab e um script, porém ocorre um conflito com o Ruby. O i-Diario exige um e o nginx exige outro e o crontab tenta inicializar o sidekiq pelo Ruby do nginx, disparando um erro.

Oi @robson!

Acredito que utilizar o Supervisor ou o Monit pode ser uma opção melhor, pois além de inicializar o sidekiq, se parar por algum motivo ele sobe novamente.

Acho que pode te ajudar: Monit e Supervisor.

Vou testar. E com o systemd?

Criando o serviço sidekiq.service pesquisa no Forum q fiz um post

1 curtida
1 curtida

Muito obrigado @dill, era o que eu procurava

1 curtida

Nada mano, se tiver dúvida, só avisar.

Mestre @dill com muita luta consegui fazer o sidekiq começar a funcionar como um serviço, porém a sincronização não sai de 0%. Segue o arquivo do serviço

#Inicio
[Unit]
Description=sidekiq
After=syslog.target network.target

[Service]
Type=simple
WorkingDirectory=/i-diario-1.0.8
#ExecStart=/bin/bash -lc "bundle exec sidekiq -e production -C config/sidekiq.yml"
ExecStart=/bin/bash -lc "RAILS_ENV=production /usr/share/rvm/gems/ruby-2.2.6/gems/bundler-1.17.3/exe/bundle exec sidekiq -e production -C config/sidekiq.yml -L log/sidekiq.log"

#ExecReload=/usr/bin/kill -TSTP $MAINPID

#User=root # usuario q esta instalado o ruby etc…
#Group=root # grupo q esta instalado o ruby etc…
UMask=0002

#if we crash, restart
RestartSec=1
Restart=on-failure
#Restart=always

#output goes to /var/log/syslog
StandardOutput=syslog
StandardError=syslog

#This will default to “bundler” if we don’t specify it
SyslogIdentifier=sidekiq

[Install]
WantedBy=multi-user.target

@robson o script está encontrando o arquivo config/sidekiq.yml ou a configuração dele está ok?

Chegou a executar a chamada direto no terminal para ver se não dá erro?

RAILS_ENV=production /usr/share/rvm/gems/ruby-2.2.6/gems/bundler-1.17.3/exe/bundle exec sidekiq -e production -C config/sidekiq.yml -L log/sidekiq.log

Boa ideia,

Segue a saída:

root@ubuntu-s-1vcpu-1gb-nyc1-01:/i-diario-1.0.8# RAILS_ENV=production /usr/share/rvm/gems/ruby-2.2.6/gems/bundler-1.17.3/exe/bundle exec sidekiq -e production -C config/sidekiq.yml
2019-11-12T15:26:47.635Z 29103 TID-gmskpdfm4 INFO: Booting Sidekiq 5.0.3 with redis options {:url=>"redis://localhost:6379", :id=>"Sidekiq-server-PID-29103"}
2019-11-12T15:26:53.573Z 29103 TID-gmskpdfm4 INFO: Running in ruby 2.2.6p396 (2016-11-15 revision 56800) [x86_64-linux]
2019-11-12T15:26:53.575Z 29103 TID-gmskpdfm4 INFO: See LICENSE and the LGPL-3.0 for licensing details.
2019-11-12T15:26:53.575Z 29103 TID-gmskpdfm4 INFO: Upgrade to Sidekiq Pro for more features and support: http://sidekiq.org
2019-11-12T15:26:53.600Z 29103 TID-gmskpdfm4 INFO: Starting processing, hit Ctrl-C to stop

@robson sincronizou? Pela saída o processo está carregando sem erro. Falta saber mesmo se as filas que subiram são as que você precisa.

Chegou a olhar ip_de_instalação/sidekiq/busy ?

Inserindo o comando no terminal funciona, pelo serviço do systemd não. Suponho que seja um problema da pasta de trabalho

Então passa o caminho absoluto de onde estão os arquivos do sidekiq.

1 curtida

Valeu, Precisando estamos aqui.

Descupe, @robson, estava no celular, e não consegui ver as postagens.

conseguiu resolver o Problema ?

caso não tenha, posso ajuda-lo.

passe o caminho certo onde está o bundle. ele vai rodar numa boa.

Oi caros, só puder trabalhar nessa tarefa hoje.

Executando o comando ‘RAILS_ENV=production /usr/share/rvm/gems/ruby-2.2.6/gems/bundler-1.17.3/exe/bundle exec sidekiq -e production -C config/sidekiq.yml -L log/sidekiq.log’ no terminal e na raiz, o terminal devolve a seguinte mensagem:

Could not locate Gemfile or .bundle/ directory

Executando na pasta do i-diario, funciona.

Acho eu que essa linha: WorkingDirectory=/i-diario-1.0.8 , não está surtindo o efeito desejado.

Resolvido com a ajuda de vocês e do template do sidekiq a seguir: https://github.com/mperham/sidekiq/blob/master/examples/systemd/sidekiq.service

Segue o código final:

#Inicio
[Unit]
Description=sidekiq
After=syslog.target network.target

[Service]
Type=simple
WorkingDirectory=/i-diario-1.0.8
#Enviroment=RAILS_ENV=production
Enviroment=MALLOC_ARENA_MAX=2
ExecStart=/usr/share/rvm/wrappers/i-diario/bundle exec sidekiq -e production
#ExecStart=/usr/share/rvm/wrappers/i-diario/bundle exec "sidekiq -d -e production -C /i-diario-1.0.8/config/sidekiq.yml -L /i-diario-1.0.8/log/sidekiq.log"

ExecReload=/usr/bin/kill -TSTP $MAINPID

User=root
Group=root
UMask=0002

#if we crash, restart
RestartSec=1
Restart=on-failure
#Restart=always

#output goes to /var/log/syslog
StandardOutput=syslog
StandardError=syslog

#This will default to “bundler” if we don’t specify it
SyslogIdentifier=sidekiq

[Install]
WantedBy=multi-user.target
1 curtida

Pessoal, estou com essa mesma situação. Estava sincronizando normalmente até reiniciar o servidor, após isso, ele não sai mais de 0,00%. Porém, ele faz o processo certo, mais parece não achar nada para sincronizar. Então aparentemente parece tudo normal, mais não trás nenhuma informação.

Na interface do sidekiq aparecem jobs em alguma fila?