supervisorno es cron!

supervisorno es cron!

Estoy intentando ejecutar el siguiente comando en segundo plano usando supervisord:

php /home/instacheeta/artisan queue:work --timeout=120

Después de instalar el servicio de supervisor en mi servidor, definir su configuración e iniciarlo, no hay ningún cambio en la base de datos que indique que el supervisor está ejecutando la aplicación PHP.

Mi configuración de 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:workSe dispara después de ejecutar cronjobcada minuto y funciona hasta el final.

cronjobfunciona bien; Lo verifiqué en mi base de datos para verificar que se almacenen nuevos datos cada minuto. Lamentablemente, el supervisor no parece ejecutar el comando definido.

No me sale ningún error worker.log. Otra información para solucionar 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

No se puede agregar el programa a supervisorctl:

[root@host instacheeta]# supervisorctl add instacheeta
ERROR: no such process/group: instacheeta

estado de supervisor:

[root@host instacheeta]# supervisorctl status
[root@host instacheeta]#

Respuesta1

Es necesario recargar la configuración del supervisor.

Hay dos métodos para esto:

  1. Reinicie el supervisorservicio utilizando la serviceherramienta ( service supervisor restart). Esto llamaría a todos los procesos supervisados, pero como actualmente no tiene dichos procesos en ejecución, esto no es un problema.

  2. Pídale al supervisordemonio que recargue dinámicamente su configuración desde los archivos de configuración. Ejecute supervisorctl rereadseguido de supervisorctl updatepara actualizar la configuración. Ahora puede utilizar startpara iniciar el programa o statusver su estado.


supervisorno es cron!

En tu pregunta afirmas:

cronjobfunciona bien; Lo verifiqué en mi base de datos para verificar que se almacenen nuevos datos cada minuto. Lamentablemente, el supervisor no parece ejecutar el comando definido.

Tenga en cuenta que si anteriormente tenía un cronjob que invocaba el comando en un ciclo regular, supervisorno lo hará sin intervención externa o a menos que el programa muera después de terminar de funcionar. El supervisor generalmente está destinado a invocar binarios, proporcionar un servicio y permanecer en ejecución una vez iniciado.

Recomendaría cambiar la aplicación para que se inicie una vez y tenga un cronograma interno en el que realice las acciones necesarias en la base de datos.

información relacionada