(3)scrapy中的模块导入

模块的导入

(1)scrapy中的from_crawler中我们讲了当导入模块之后,使用模块的from_crawler方法创建实例的过程,现在让我们来了解一下scrapy中模块是如何导入的。

以调度器scheduler为例,scheduler的导入在engine中

这里的self.settings是经过各层参数覆盖之后的最终参数(详见(2)scrapy中的settings),默认的'SCHEDULER'参数在scrapy的默认参数default_settings中,也就是调度器所在的路径

找到这个路径,可以看到这个类是真实存在的

接着看一下load_object做了什么(在scrapy.utils.misc下)

可以看出,load_object仅仅是调用import_module库将调度器进行导入,然后返回SCHEDULER类而已,其他模块的导入同理

scrapy的低耦合

了解了scrapy导入模块的流程后,就差不多清楚为什么说scrapy的架构是低耦合的了,同样以调度器为例,我们完全可以按照scrapy定义的接口标准,自己编写一个调度器,然后在项目settings模块中覆盖'SCHEDULER'参数,将路径指向我们自定义的调度器类,那么scrapy就会使用我们自定义的调度器模块了(scrapy-redis的原理)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容