scrapy 如何在蜘蛛程序完成之前重试零碎操作?

cclgggtu  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(134)

我用Scrappy和python3.6.8构建了sprider,并在运行sprider时记录了未完成的url:

self.urls.append(url) 

 item=myItem()
 item["mylink"]=url        
 yield scrapy.Request(            
       url="myurl",
       method='GET',
       headers=self.headers,
       callback=self.parse_detail,
       errback=self.make_new_request,
       meta={"item":item})

我尝试在蜘蛛类破坏之前重试未完成URL:

def __del__(self):
    print("\033[31myielded:",len(self.yielded),"scrapying:",len(self.urls),"\033[0m")
    if len(self.urls)>0:
        print(self.urls)
        print("\033[31mretry uncompleted\033[0m")
        self.RetryUncompletedUrls()

但蜘蛛只是打印和存在!我怎么能在蜘蛛完成之前重试操作?谢谢!

cx6n0qe3

cx6n0qe31#

重试中间件默认启用,并设置为重试URL两次。
您可以在www.example.com文件中对此进行调整settings.py。

RETRY_ENABLED = True
RETRY_TIMES = 2
RETRY_HTTP_CODES = [500, 502, 503, 504, 522, 524, 408, 429]

相关问题