Есть ли способ определить, выполняется ли ActiveJob на рабочем Resque или в приложении?

У меня есть задание в моем приложении rails, которое расширяется от ActiveJob::Base, и есть два способа его вызова:

  1. ResqueScheduler ежедневно, где он забирается работником Resque и обрабатывается
  2. В приложении через вызов #perform_now, поэтому он обрабатывается приложением.

Есть ли способ определить в задании, обрабатывается ли оно работником Resque?


person mosquito242    schedule 30.04.2016    source источник


Ответы (2)


Вы должны увидеть ссылку на ActiveJob в журнале вашего сервера.

[ActiveJob] [<YOUR-JOB-CLASS>] [b8ed2ecb-10ce-433d-8ddb-33a04c8021cd]    Performing <YOUR-JOB-CLASS> from Resque(default)...

Это не является окончательным, но это сильный индикатор контекста, в котором выполняется ваш код.

person Kit    schedule 30.04.2016
comment
Я пытаюсь выяснить во время выполнения кода - я записываю определенную информацию, если задание выполняется в фоновом режиме, но не если вызывается #perform_now. - person mosquito242; 30.04.2016
comment
Лучшее решение, которое я нашел до сих пор, в основном переопределяет метод Perform_now, чтобы добавить переменную к аргументам, но я надеялся, что есть лучший способ. - person mosquito242; 30.04.2016

Вы можете использовать defined?(Rails), чтобы определить, находитесь ли вы в приложении Rails или в контексте Resque.

person dsomach    schedule 03.05.2016