爬虫日记(80):Twisted的循环任务

Posted caimouse

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬虫日记(80):Twisted的循环任务相关的知识,希望对你有一定的参考价值。

前面已经学习了Twisted框架的一些延时机制、延时链、多个延时条件等等,接着下来继续学习Twisted的循环任务,比如scrapy里下载任务失败之后,尝试过一段时间再重试下载,那么这个就可以在循环任务里检查是否到达下载时间。另外scrapy里也采用心跳机制来检查整个调度任务是否有满足条件进行下载的任务。

 

在scrapy下载网站的过程中,经常会遇到这样的情况,那就是向网站进行HTTP请求,然后等待数据返回,当数据返回时就需要向多个任务进行处理。在Twisted框架里实现这种需求,提前把所有需要进行处理的回调函数添加到延时对象里,一旦下载数据返回时,Twisted的延时对象就会触发所有回调函数按顺序运行。下面来演示一下,一个事件触发,多个回调函数按顺序执行的情况。例子代码如下:

#爬虫日记-蔡军生(qq:9073204)

#https://mysoft.blog.csdn.net/

#2021-05-24



from twisted.internet import task

from twisted.internet import reactor

from twisted.internet import defer



def defer_succeed(result):

    """Same as twisted.internet.defer.succeed but delay calling callback until

    next reactor loop



    It delays by 100ms so reactor has a chance to go trough readers and writers

    befor

以上是关于爬虫日记(80):Twisted的循环任务的主要内容,如果未能解决你的问题,请参考以下文章

爬虫日记(99):Twisted的Deferred重新审视

爬虫日记(81):Twisted的线程池使用

爬虫日记(79):Twisted的延时机制

爬虫日记(82):Twisted的线程返回值

爬虫日记(106):Twisted:单元测试怎么样编写

爬虫日记(101):Twisted:使用Deferred重构异常代码