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

时间:2013-08-29 03:16:39

标签: ruby-on-rails-3 logging sidekiq

在sidekiq的日志文件中,我可以看到工人的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

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

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

2 个答案:

答案 0 :(得分:12)

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

logger.info "JID #{jid} - TID #{Thread.current.object_id.to_s(36)}"

答案 1 :(得分:3)

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