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

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