2013-08-29 2 views
9

В файле журнала sidekiq, я могу видеть, идентификаторы работников, например:Могу ли я получить идентификатор моего работника sidekiq внутри рабочего?

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 

Внутри тела моего работника @ @ выполнять метод, я хотел бы получить этот идентификатор. Если это невозможно, то какова была бы лучшая стратегия для получения уникального идентификатора для этого работника, учитывая, что существует несколько параллельных работников одного и того же класса?

Мне нужно это для помощи в обработке файлов журнала.

ответ

12

Вы можете получить доступ к идентификатору задания, используя метод доступа jid и идентификатор потока, используя метод Thread.current. Как это:

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

Это, к сожалению, не работает, если вы отложили метод модели activerecord. – coorasse

2

Если вы используете ActiveJob вы получаете получить его с self.job_id (или @job_id).

Смежные вопросы