【问题标题】:Stop Scrapy request pipeline for a few minutes and retry停止 Scrapy 请求管道几分钟并重试
【发布时间】:2019-02-16 11:25:38
【问题描述】:

我正在使用 Scrapy 和 Crawlera 代理抓取单个域,有时由于 Crawlera 问题(技术中断),我收到 407 状态代码,无法抓取任何网站。是否可以停止请求管道 10 分钟然后重新启动蜘蛛?需要明确的是,我不想推迟请求,而是停止一切(可能除了项目处理)10 分钟,直到他们解决问题。我正在运行 10 个并发线程。

【问题讨论】:

    标签: web-scraping scrapy crawlera


    【解决方案1】:

    是的,你可以,有几种方法可以做到这一点,但最明显的就是简单地插入一些阻塞代码:

    # middlewares.py
    class BlockMiddleware:
    
        def process_response(self, response, request):
            if response.status == 407:
                print('beep boop, taking a nap')
                time.sleep(60)
    

    并激活它:

    # settings.py
    DOWNLOADER_MIDDLEWARES = {
        'myproject.middlewares.BlockMiddleware': 100,
    {
    

    【讨论】:

    • 谢谢! sleep 会阻止所有并发请求还是仅阻止一个?
    • 它会阻塞整个程序:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-08
    • 2018-04-15
    • 1970-01-01
    • 2016-11-22
    • 2019-04-09
    相关资源
    最近更新 更多