一个多线程爬虫程序,有一个下载线程,DownloadThread,我想同时运行多个下载线程。
但是其中有一段逻辑,如果在下载的过程中检测到状态码为429,因为会遇到被屏蔽ip的情况或者同一个ip请求过多,我使用tor弄了一个更换请求ip的程序。
如果同时有五个DownloadThread线程在运行,只要有一个线程遇到了异常情况,我就需要将5个DownloadThread都停止进入等待状态,然后运行changeip的程序,运行成功后,5个DownloadThread再继续工作。
求问这需要如何去实现
我自己本来的想法是实用 threading模块中的Event类。
首先设定一个全局的
event = Event()
当运行到需要更换ip的条件时,则执行even.wait()
但是这样做只能使当前的DownloadThread进入wait状态,不能使当前所有的DownloadThread进入wait状态