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

Posted caimouse

tags:

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

当我们深入地分析Scrapy的源码时,我们一定会遇到Twisted框架,因为Scrapy是构建在这个框架之上,因此我们是避免不了要了解Twisted框架内容,才能够进一步理解Scrapy运行的代码,否则那是不可能完成的任务,不可能在浮沙上起高楼。

 

Twisted框架提供了一个异步编程的框架,它是基于事件驱动,而不是基于多线程的方式。因此尽可能让代码不要阻塞运行,就成为了最基本的要求。Twisted是一个事件驱动型的网络引擎。由于事件驱动编程模型在Twisted的设计哲学中占有重要的地位,因此这里有必要花点时间来回顾一下究竟事件驱动意味着什么。事件驱动编程是一种编程范式,这里程序的执行流程由外部事件来决定。它的特点是包含一个事件循环,当外部事件发生时使用回调机制来触发相应的处理。另外两种常见的编程范式是(单线程)同步以及多线程编程。

 

在事件异步编程里,是靠回调机制来管理阻塞的,因为只有一个线程,要想多个功能共享使用这一个线程,那么就需要使用事件触发来回调。在Twisted的框架里使用延时机制来实现异步代码编程,允许我们定义某些事件时所采取的动作序列。

首先我们来熟悉Deferred对象,这个对象封装了事件的回调机制,来看下面的例子:

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

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

#2021-05-23



from twi

以上是关于爬虫日记(79):Twisted的延时机制的主要内容,如果未能解决你的问题,请参考以下文章

爬虫日记(94):Twisted的reactor设计来源

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

爬虫日记(93):Twisted的设计模型

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

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

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