我在我的Rails应用程序,从ActiveJob :: Base的延伸的工作,并且有它被称为两种方式:有没有办法确定ActiveJob是在Resque worker还是在应用程序中执行?
- ResqueScheduler每天,它是由一个Resque工人捡到并已处理
- 通过#perform_now调用在应用程序中,所以它由应用程序处理。
有没有一种方法可以让我在工作中确定它是否由Resque工作人员处理?
我在我的Rails应用程序,从ActiveJob :: Base的延伸的工作,并且有它被称为两种方式:有没有办法确定ActiveJob是在Resque worker还是在应用程序中执行?
有没有一种方法可以让我在工作中确定它是否由Resque工作人员处理?
您应该在您的服务器日志中看到对ActiveJob
的引用。
[ActiveJob] [<YOUR-JOB-CLASS>] [b8ed2ecb-10ce-433d-8ddb-33a04c8021cd] Performing <YOUR-JOB-CLASS> from Resque(default)...
这不是确定性的,但它是您的代码正在执行的上下文的有力指标。
您可以使用defined?(Rails)
来确定您是否在Rails应用程序中,或者您是否在Resque上下文中。
我试图弄清代码执行过程中 - 如果作业正在后台执行,我记录了某些信息,但如果调用#perform_now则不会。 – mosquito242
迄今为止发现的最佳解决方案基本上覆盖了perform_now方法以向参数添加变量,但我希望有更好的方法。 – mosquito242