Проверьте, работает ли задержка в рельсах

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

Использую  Rails 3.0.20,  ruby 1.8.7 (2011-06-30 patchlevel 352), и  delayed_job 3.0.4

Ответ 1

С Rails 5.x вы можете зайти на свой сервер по ssh, перейти в папку /current в вашем приложении и запустить:

RAILS_ENV=production bin/delayed_job status

Ответ 2

Вы можете использовать RAILS_ENV = production script/delayed_job статус, если вы проверяете производственный режим

Ответ 3

В настоящее время лучшим способом, который я могу придумать для обеспечения delayed_job daemon всегда, является добавление initializer в наше приложение Rails, которое проверяет, работает ли демон. Если он не работает, то initializer запускает daemon, в противном случае он просто оставляет его.

Теперь возникает вопрос, как мы обнаруживаем, что delayed_job daemon выполняется изнутри script?

Простой способ -

Проверьте наличие демонов PID file (File.exist?...). Если он там, то предположим, что он запускает еще запустить его.

Ответ 4

Самый простой способ проверить, работает ли delayed_job или нет, - это проверить в поле locked_by.

Это поле будет содержать рабочий или процесс блокировки/обработки задания.

Запуск Delayed::Job.where('locked_by is not null') даст вам некоторые результаты, если выполняются задания.

Кроме того, вы можете выполнить часовую задачу, выполнив этот запрос, чтобы проверить статус.

Надеюсь, что это поможет.

Ответ 5

Чтобы проверить статус задания и т.д., вы можете использовать delayed_job_web gem, который забирает все заданные в очереди задания. И чтобы убедиться, что он все время устанавливает monit. Вот railscast. Здесь больше информации о том, как настроить monit для delayed_job