scrapy启动流程图(3)——engine.py的内部运作图(1)

这就是回调地狱!!! 同志们不要学!!!所有的异常和数据处理下载等都被绑在request相关的deferred对象里了

本文解释了运行

scrapy crawl xxspider

命令后,scrapy内部是如何跑的,一步步拆解看

从命令行解析到具体调用命令请看:第一篇 《scrapy启动流程图(超详细)——cmdline.py解析

从具体命令到创建crawlerprocess和实例化crawler 请看:第二篇《 scrapy启动流程图(2)——crawler的启动流程图

下面的流程图详细的解释了engine代码之间是如何调用的

这里提前说明几点:

1.为什么request只有压入 没有弹出?

因为弹出是scraper内部的item处理类来调用的,engine里有download方法做为接口

2.程序准确的运行时间是什么时候 ?

是在上一层 Crawlerprocess里面的函数start 调用了

reactor.run 以后 这些代码才算是开始跑 对于deferred的各种操作仅仅可以当做是一种配置

deferred对象相当于结果的替代品,因为个结果还没生成

3.开启和关闭的部分代码为何没有解释?

开启和关闭的主要过程就是实例化相关的类 log 以及发送信号 ,关闭也就是这个过程倒放一遍 代码不难

4.engine.start的意义在哪里?

主要是生成一个deferred对象,当这个engine跑完了以后 可以调用一些针对engine结束后的回调 

具体请看流程图:

实际流程图

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值