V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ghd700
V2EX  ›  问与答

如何在 Scrapy 里面发送一个延时的请求?

  •  
  •   ghd700 · 2019-03-22 21:01:57 +08:00 · 2266 次点击
    这是一个创建于 2071 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位大佬,现在的需求是请求失败后,需要在 10 分钟后重新发请求。 既然 scrapy 是基于 twisted 的异步框架,那么如何使用 reactor 的 calllater 函数来发送一个延时的请求?是否有现成的机制,还是说要自己实现往 reactor 里面添加 request

    3 条回复    2019-03-23 08:53:58 +08:00
    ghd700
        1
    ghd700  
    OP
       2019-03-22 21:25:48 +08:00
    还有一个关于 scrapy 的问题,yield 出去的 request 是怎么被处理的呢?
    ghd700
        2
    ghd700  
    OP
       2019-03-23 01:15:12 +08:00
    第一个问题已经解决了,使用 scrapy.utils.reactor.CallLaterOnce,稍微封装一下就可以实现
    wuyue92tree
        3
    wuyue92tree  
       2019-03-23 08:53:58 +08:00
    直接在 downloadmiddles 里面控制也可以吧,继承 retry,失败了就 sleep 再 return self._retry 对象

    至于 requests 处理,yield 之后内部调度处理,到这个请求了,就按你设置的 middles 顺序执行
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1646 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 16:52 · PVG 00:52 · LAX 08:52 · JFK 11:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.