0
我有多個worker使用beanstalk-client-ruby處理beanstalkd隊列中的請求。檢測哪個工作人員將TTR過期作業返回隊列?
出於測試目的,工作人員在從隊列中提取作業後隨機進入無限循環。
Beanstalk注意到作業已被預留時間過長,並將其返回隊列供其他工作人員處理。
我怎麼能檢測到這件事發生了,以便我可以殺死發生故障的工人?
看起來像我可以得到檢測超時已經發生:
> job.timeouts
=> 0
> sleep 10
=> nil
> job.timeouts
=> 1
現在,我怎麼是這樣的:
> job=queue.reserve
=> 189
> job.MAGICAL_INFO_STORE[:previous_worker_pid] = $$
=> extraordinary magic happened
> sleep 10
=> nil
> job=queue.reserve
=> 189
> job.timeouts
=> 1
> kill_the_sucker(job.MAGICAL_INFO_STORE[:previous_worker_pid])
=> nil