我可以在工人中获得sidekiq工人的身份证吗?

Ove*_*esh 9 logging ruby-on-rails-3 sidekiq

在sidekiq的日志文件中,我可以看到worker的ID,如下所示:

2013-08-28T10:19:03Z 8911 TID-osy5fnl1o MyWorker JID-262996c2737e7a5ec5c71674 INFO: start
2013-08-28T10:19:03Z 8911 TID-ptes4 MyWorker JID-6830e08b5da72b360d4d1ae2 INFO: start
2013-08-28T10:19:03Z 8911 TID-povog MyWorker JID-2d31755b001ecd02fe1abc09 INFO: done: 22.52 sec
2013-08-28T10:19:04Z 8911 TID-povog MyWorker JID-df52f500a3ba27e18b2ba313 INFO: start
Run Code Online (Sandbox Code Playgroud)

在我的工作人员@ perform @方法的正文中,我想获得该ID.如果不可能,考虑到同一类中有多个并发工作者,那么为该工作者获取唯一ID的最佳策略是什么?

我需要这个来帮助处理日志文件.

mir*_*rza 12

您可以使用jid访问器方法访问作业ID,使用Thread.current方法访问线程ID.像这样:

logger.info "JID #{jid} - TID #{Thread.current.object_id.to_s(36)}"
Run Code Online (Sandbox Code Playgroud)


Ale*_*fee 6

如果您正在使用,ActiveJob则可以通过self.job_id(或@job_id) 获得它。