service-streamer
service-streamer copied to clipboard
某个worker死掉后,mp.Queue() get获取输入数据,锁无法释放bug
你好,我启动2个worker测试服务效果,在我手动杀死第一个worker时(模拟服务意外崩了的情况),发现有时候第一个worker会占据读取输入队列数据的_rlock,手动杀死时,这个锁不会被释放,从而导致第二个worker总是不能从队列中get到值,recv_request永远超时,队列长度持续增大。请问有没有什么好的异常处理方案?
我使用的是Streamer和StreamerWorker
try:
print("_recv_request pid is: " + str(os.getpid()))
print("_request_queue is: " + str(self._request_queue.qsize()))
item = self._request_queue.get(timeout=timeout)
except Empty:
raise TimeoutError
else:
return item
# queues.py中的代码
if not self._rlock.acquire(block, timeout):
print("锁住了")
raise Empty