9

在 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 的最佳策略是什么?

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

4

2 回答 2

13

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

logger.info "JID #{jid} - TID #{Thread.current.object_id.to_s(36)}"
于 2013-08-29T15:05:03.087 回答
5

如果你正在使用ActiveJob,你会得到它self.job_id(或@job_id)。

于 2015-07-16T19:21:48.767 回答