scrapy源码剖析(scrapy.settings)

模块

  • 模块:scrapy.settings
  • 类:SettingsAttributes BaseSettings Settings

SettingsAttributes

  1. 表示一个基本的属性值,该值被赋予了优先级,使用set方法时,只有传入优先级高於单前属性值的优先级时才会被赋值。

BaseSettings

  • 关键attributes属性,是一个字典,存储每个name下的属性值(SettingsAttributes或BaseSettings),重写了以下方法,用于支持BaseSettings的各种操作,访问BaseSettings对象就好像访问attributes字典各个属性值一样。

    • __getitem__
    • __contains__ ( 支持 in self判断)
    • __delitem__
    • __iter__
    • __len__
  • 关键frozen变量,对BaseSettings的修改操作进行锁定,被锁定的对象进行修改的话会抛出异常,提供了freeze方法,使得锁定生效。

  • 关键操作方法,作为外部各种操作的接口

    • get特定类型数据
    • set \ setdict \ setmodule方法
    • update 增加dict value支持
    • delete

Settings

  • 继承自BaseSettings,初始化时加载默认配置,并且支持了配置文件中的dict属性,作为BaseSettings。使得scrapy加载配置时支持两层嵌套:
    1. key = value and value != dict (value = string|int|…)
    2. key = value and values = dict (dictvalue = string|int|…)

心得

  • 这个模块简直可以剥离出来,搞成一个通用的settings组件自己用。。
    • 支持优先级覆盖
    • 支持字典嵌套
    • 支持配置锁定
    • 通用settings对象方法

souce code

init.py”>https://github.com/chenxilinsidney/scrapy/blob/master/scrapy/settings/init.py

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章