Estou tentando executar o comando abaixo em segundo plano usando supervisord
:
php /home/instacheeta/artisan queue:work --timeout=120
Após instalar o serviço supervisor em meu servidor, definir sua configuração e iniciá-lo, não há nenhuma alteração no banco de dados para indicar que o supervisor está executando a aplicação PHP.
Configuração do meu supervisor:
[program:instacheeta]
process_name=%(program_name)s_%(process_num)s
command=php /home/instacheeta/artisan queue:work --timeout=120
autostart=true
autorestart=true
numprocs=1
redirect_stderr=true
stdout_logfile=/home/instacheeta/worker.log
queue:work
dispara após a execução cronjob
a cada minuto e funciona até terminar.
cronjob
funciona bem; Verifiquei isso em meu banco de dados para verificar se novos dados são armazenados a cada minuto. Infelizmente, o supervisor parece não executar o comando definido.
Não recebo nenhum erro em worker.log
. Outras informações para solução de problemas:
[root@host instacheeta]# ps aux|grep supervisor
root 3267 0.0 0.2 219784 12992 ? Ss 11:47 0:02 /usr/bin/python /usr/bin/supervisord
root 18279 0.0 0.0 112680 948 pts/0 S+ 14:38 0:00 grep --color=auto supervisor
Falha ao adicionar programa a supervisorctl
:
[root@host instacheeta]# supervisorctl add instacheeta
ERROR: no such process/group: instacheeta
situação de supervisor:
[root@host instacheeta]# supervisorctl status
[root@host instacheeta]#
Responder1
A configuração do supervisor precisa ser recarregada.
Existem dois métodos para isso:
Reinicie o
supervisor
serviço usando aservice
ferramenta (service supervisor restart
). Isso chamaria todos os processos supervisionados, mas como atualmente nenhum desses processos está em execução, isso não é um problema.Peça ao
supervisor
daemon para recarregar dinamicamente sua configuração a partir dos arquivos de configuração. Executesupervisorctl reread
seguido desupervisorctl update
para atualizar a configuração. Agora você pode usarstart
para iniciar o programa oustatus
visualizar seu status.
supervisor
não é cron
!
Na sua pergunta você afirma:
cronjob
funciona bem; Verifiquei isso em meu banco de dados para verificar se novos dados são armazenados a cada minuto. Infelizmente, o supervisor parece não executar o comando definido.
Esteja ciente de que se você anteriormente tinha um cronjob que invocava o comando em um ciclo regular, supervisor
não fará isso sem intervenção externa ou a menos que o programa morra após terminar de funcionar. supervisor normalmente tem como objetivo invocar binários, fornecer um serviço e permanecer em execução depois de iniciado.
Eu recomendaria alterar o aplicativo para que ele seja iniciado uma vez e tenha uma programação interna na qual execute todas as ações necessárias no banco de dados.