Closed Foristkirito closed 6 years ago
这个异常你有遇到过吗?
在最后要结束的时候,not_fetcher
, not_parser
, not_saver
都是0,但是始终有一个 task
,log
也一直在打,退出不了,数据量比较大没有回溯看 log
。
后来我改成 try...catch
后发现最后,也是应该结束的时候,有 task_done() called too many times
的报错,正在找哪出现的问题。
task_done() called too many times,我的理解是队列里放了10个item,但是调用了11此该函数。按照代码逻辑不应该出现这个问题。可以看一下你的代码吗?
是那一部分的代码?
如果方便的话,想看整个代码工程
最近针对这个问题,我进行了大量的测试。抓取数据量超过亿级别,并且在多台机器上都进行了测试,并没有发现类似问题。暂时先关闭该问题了。
以下面代码为例,
self.pool.finish_a_task(TPEnum.URL_FETCH)
以上的任意代码出现问题,都可能造成线程异常退出,导致程序无法正常结束。比较简单的解决办法是加个try ... catch