Планировщик Laravel от супервизора работает несколько раз

Я пытаюсь использовать Supervisord с планировщиком Laravel. Он работает, НО работает несколько раз, я не знаю, неправильная ли какая-либо конфигурация. Но то, что я ожидал, это только один раз для каждого планировщика. Если у меня есть опыт в этой ситуации, пожалуйста, помогите мне.

  1. Это файл конфигурации супервизора. sudo nano /etc/supervisord.conf
[program:laravel-scheduler]
client_loop: send disconnect: Broken pipeum)02d
command=php /var/www/project-api/artisan schedule:run --verbose --no-interaction
[Process completed]autostart=true
autorestart=true
numprocs=1
user=nginx
redirect_stderr=true
stdout_logfile=/var/www/project-api/storage/logs/schedule.log
stdout_logfile_maxbytes=10MB
logfile_backups=10
  1. Это консольное ядро ​​laravel.
protected function schedule(Schedule $schedule)
{
    $schedule->command('telescope:prune --hours=24')->daily();
    $schedule->command('horizon:snapshot')->everyFiveMinutes();
    $schedule->job(new HourlyJob(), QueueName::HOURLY_JOB)->hourly();
    $schedule->job(new MinuteJob(), QueueName::MINUTE_JOB)->everyTwoMinutes();
} 
  1. Это файл schedule.log

введите здесь описание изображения

Планировщик правильно запускается каждые две минуты, но проблема заключается в многократном выполнении запланированных команд. Пожалуйста, помогите мне в этом вопросе. Спасибо


person Richathon    schedule 27.02.2021    source источник
comment
почему вы используете супервайзер? это то, для чего предназначен cron ... супервизор должен убедиться, что что-то в основном продолжает работать, чего вы бы не хотели (поскольку он просто будет перезапускать его), вы просто хотите, чтобы cron поражал планировщик каждую минуту   -  person lagbox    schedule 27.02.2021
comment
Итак, вы имеете в виду, что мне просто нужно удалить laravel-scheduler из supervisord conf, тогда все будет в порядке, я прав?   -  person Richathon    schedule 27.02.2021
comment
вы должны поставить планировщик на cron, а не с супервизором. это было указано в документах laravel.com/docs/8.x/ планирование#запуск-планировщика   -  person KevDev    schedule 27.02.2021
comment
нет необходимости в супервизоре для заданий cron, просто запланируйте один cron на своей cpanel, который будет запускать расписание каждую минуту   -  person Zohaib    schedule 27.02.2021
comment
Спасибо за все ответы, после того, как я поставил планировщик на cron, он работает хорошо, но это команда $schedule-›. В случае $schedule-›job я не видел, чтобы задания помещались в очереди. Кто-нибудь знает, почему?   -  person Richathon    schedule 27.02.2021


Ответы (1)


Только что сам столкнулся с той же проблемой, и для меня оказалось, что супервизор запускал cron в режиме демона (-b, также по умолчанию), и в тот момент, когда он работал в фоновом режиме, супервизор думал, что он вышел, поэтому перезапустил его. Supervisor повторил это четыре раза, прежде чем сдаться, поэтому у нас было четыре запущенных экземпляра cron и, следовательно, четыре экземпляра каждой запланированной задачи. Запуск cron в режиме переднего плана (-f) исправил.

person whoasked    schedule 21.04.2021