Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 Rails 4-延迟作业-可以在执行方法中知道作业id吗?_Ruby On Rails 4_Delayed Job - Fatal编程技术网

Ruby on rails 4 Rails 4-延迟作业-可以在执行方法中知道作业id吗?

Ruby on rails 4 Rails 4-延迟作业-可以在执行方法中知道作业id吗?,ruby-on-rails-4,delayed-job,Ruby On Rails 4,Delayed Job,在perform方法中,我想知道当前作业的ID是什么 例如,排队、成功、失败和错误方法提供了作业参数: def enqueue(job) puts job.id end 有可能吗?我假设您正在使用sidekiq作为后端。在这种情况下,您可以执行以下操作: def perform(*args) logger.info self.job_id # Do something later end 这是日志输出 [ActiveJob] [RequestHandlerJob] [e99236

perform
方法中,我想知道当前作业的ID是什么

例如,
排队
成功
失败
错误
方法提供了
作业
参数:

def enqueue(job)
  puts job.id
end

有可能吗?

我假设您正在使用sidekiq作为后端。在这种情况下,您可以执行以下操作:

def perform(*args)
  logger.info self.job_id
  # Do something later
end
这是日志输出

[ActiveJob] [RequestHandlerJob] [e9923650-cd02-40d1-937d-859852e92c61] e9923650-cd02-40d1-937d-859852e92c61
更新

对不起,错过了

我从中找到了解决办法

#config/initializers/delayed_job.rb
延迟::Worker.logger=logger.new(File.join(Rails.root,'log','dj.log'))
类RequestHandlerJob

这是作业id
5f267272-8826-491d-b7d5-82a200e1a6b6
。希望这会有所帮助。

我不确定它是否仍然适用,因为我使用的是Rails 4.1.8和我添加的Delayed_作业示例中的Delayed Job gem。我想我不能使用ActiveJob::Base,因为我使用的是Rails 4.1.8(不是4.2)。如果我错了,请纠正我。你能把我们正在讨论的代码贴出来吗?一般来说,对于刚刚延迟的工作也有相同的方法。您需要在初始化器中定义记录器,然后才能在其中找到作业id。
# config/initializers/delayed_job.rb
Delayed::Worker.logger = Logger.new(File.join(Rails.root, 'log', 'dj.log'))


class RequestHandlerJob < ActiveJob::Base
  queue_as :default

  def perform(user_id)
    u = User.find(user_id)
    Delayed::Worker.logger.info self.job_id
    # Do something later
  end
end


[retgoat@iMac-Roman ~/workspace/tapp/log]$ tail -f dj.log
I, [2016-06-24T07:58:32.329471 #23874]  INFO -- : 2016-06-24T07:58:32+0600: [Worker(host:iMac-Roman.local pid:23874)] Starting job worker
I, [2016-06-24T07:58:42.404522 #23874]  INFO -- : 2016-06-24T07:58:42+0600: [Worker(host:iMac-Roman.local pid:23874)] Job ActiveJob::QueueAdapters::DelayedJobAdapter::JobWrapper (id=7) RUNNING
I, [2016-06-24T07:58:42.448858 #23874]  INFO -- : 5f267272-8826-491d-b7d5-82a200e1a6b6
I, [2016-06-24T07:58:42.451204 #23874]  INFO -- : 2016-06-24T07:58:42+0600: [Worker(host:iMac-Roman.local pid:23874)] Job ActiveJob::QueueAdapters::DelayedJobAdapter::JobWrapper (id=7) COMPLETED after 0.0466
I, [2016-06-24T07:58:42.452007 #23874]  INFO -- : 2016-06-24T07:58:42+0600: [Worker(host:iMac-Roman.local pid:23874)] 1 jobs processed at 15.9642 j/s, 0 failed