【问题标题】:Can I get the ID of my sidekiq worker inside the worker?我可以在 worker 中获取 sidekiq worker 的 ID 吗?
【发布时间】:2013-08-29 03:16:38
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 很遗憾,如果您延迟了 activerecord 模型方法,这将不起作用。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-17
      • 1970-01-01
      • 2017-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多