scrapy downloadmiddleware无法安排来自process_response的请求

时间:2017-08-04 09:36:50

标签: scrapy

我想将响应代码为423的请求推送回调度程序,因此我创建了一个downloadmiddleware:

class MyMiddleware(object):
    def process_response(self, request, response, spider):
        if response.status == 423:
            return request
        else:
            return response

但它不起作用,即使请求不再在调度程序中。

谢谢你的帮助!

2 个答案:

答案 0 :(得分:1)

您的新请求可能会被scrapy的dupefilter过滤掉。

您可以尝试添加dont_filter=True参数:

def process_response(self, request, response, spider):
    if response.status == 423:
        request = request.replace(dont_filter=True)
        return request
    else:
        return response

答案 1 :(得分:0)

您可以将这两项设置设置为scrapy_settings

RETRY_HTTP_CODES=[423]
RETRY_TIMES=10

scrapy会帮你解决这个问题。