2013-08-29 25 views
9

Trong log file sidekiq, tôi có thể nhìn thấy ID của người lao động, như thế này:Tôi có thể lấy ID của nhân viên phụ trách bên trong công nhân không?

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 

Bên trong cơ thể của người lao động của tôi @ @ thực hiện phương pháp, tôi muốn lấy ID đó. Nếu không thể, chiến lược tốt nhất để có được một ID duy nhất cho công nhân đó, xem xét rằng có nhiều công nhân đồng thời cùng một lớp là gì?

Tôi cần điều này để được trợ giúp trong việc xử lý tệp nhật ký.

Trả lời

12

Bạn có thể truy cập id công việc bằng cách sử dụng phương thức accessor jid và id luồng bằng phương thức Thread.current. Như thế này:

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

Rất tiếc, điều này không hoạt động nếu bạn đã trì hoãn phương thức mô hình hóa đối tượng. – coorasse

2

Nếu bạn đang sử dụng ActiveJob bạn nhận được nó với self.job_id (hoặc @job_id).

Các vấn đề liên quan