2013-08-29 10 views
9

Nel file di log di sidekiq, posso vedere ID di lavoratori, in questo modo:Posso ottenere l'ID del mio lavoratore sidekiq all'interno del lavoratore?

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 

All'interno del corpo del mio lavoratore di eseguire @ @ metodo, mi piacerebbe ottenere tale ID. Se non è possibile, quale sarebbe la migliore strategia per ottenere un ID univoco per quel lavoratore, tenendo conto del fatto che ci sono più lavoratori concorrenti della stessa classe?

Mi serve aiuto per l'elaborazione dei file di registro.

risposta

12

È possibile accedere all'ID processo utilizzando il metodo accessor jid e l'id del thread utilizzando il metodo Thread.current. Come questo:

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

Questo purtroppo non funziona se si è ritardato un metodo di modello activerecord. – coorasse

2

Se stai usando ActiveJob si ottiene ottenere con self.job_id (o @job_id).

Problemi correlati