Open lxsyz opened 1 year ago
你好,我启动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
你好,我启动2个worker测试服务效果,在我手动杀死第一个worker时(模拟服务意外崩了的情况),发现有时候第一个worker会占据读取输入队列数据的_rlock,手动杀死时,这个锁不会被释放,从而导致第二个worker总是不能从队列中get到值,recv_request永远超时,队列长度持续增大。请问有没有什么好的异常处理方案?
我使用的是Streamer和StreamerWorker