在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的最佳策略是什么,同时考虑到同一类中有多个并发工作者?
我需要这个来帮助处理日志文件。
答案 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
)来获取它。