V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
ghd700
V2EX  ›  问与答

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

  •  
  •   ghd700 · Mar 22, 2019 · 3077 views
    This topic created in 2603 days ago, the information mentioned may be changed or developed.

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

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

    至于 requests 处理,yield 之后内部调度处理,到这个请求了,就按你设置的 middles 顺序执行
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   925 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 20:37 · PVG 04:37 · LAX 13:37 · JFK 16:37
    ♥ Do have faith in what you're doing.