SCRAPY中DOWNLOADER_MIDDLEWARES中間件的配置順序

在setting中捂敌,可以自定義中間件岖赋,接受各種request芒涡、response浮驳、 exception消息
比如有的人想在請(qǐng)求超時(shí)時(shí) 做一些處理吁峻,
有的人想為request設(shè)置代理

DOWNLOADER_MIDDLEWARES = {
'discountSpider.middlewares.ProcessMiddleware':90,    
'discountSpider.middlewares.ProxyMiddleware': 750, 
'scrapy.contrib.downloadermiddleware.httpproxy.HttpProxyMiddleware': 751, 
'discountSpider.middlewares.RandomUserAgent': 400,
'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware': None,
}

然而滑负,中間件的順序是很重要的
如果是想截取process_request,則越前面越早收到通知,然后順著向后依次通知用含,沒(méi)什么意外的話是這樣矮慕。
但是如果是截取process_response,獲得request請(qǐng)求完成后啄骇,返回response的消息痴鳄,如果是正常下載完成的話,是第一個(gè)中間件收到通知缸夹,然后順序向后通知痪寻。
但是往往會(huì)發(fā)生很多意外螺句,比如請(qǐng)求超時(shí),比如請(qǐng)求被retry橡类,那么是不會(huì)發(fā)送通知到第一個(gè)的蛇尚,而是根據(jù)scrapy默認(rèn)中間件的位置發(fā)送,
分配中間件的順序請(qǐng)查看 DOWNLOADER_MIDDLEWARES_BASE 設(shè)置猫态,而后根據(jù)您想要放置中間件的位置選擇一個(gè)值佣蓉。由于每個(gè)中間件執(zhí)行不同的動(dòng)作,您的中間件可能會(huì)依賴(lài)于之前(或者之后)執(zhí)行的中間件亲雪,因此順序是很重要的勇凭。

比如DOWNLOADER_MIDDLEWARES_BASE中
'scrapy.contrib.downloadermiddleware.retry.RetryMiddleware': 500, 如果你把自定義的中間件序號(hào)設(shè)為100,那么當(dāng)下載器發(fā)生錯(cuò)誤504 500錯(cuò)誤义辕,需要retry虾标,則會(huì)將response狀態(tài)為retry的消息通知后面中間件,你的中間件的process_response將無(wú)法收到消息灌砖,因?yàn)樗菑?00序號(hào)開(kāi)始向后通知璧函,所需你將自己的中間件序號(hào)改為500以后,則可以收到消息基显。

又比如
'scrapy.contrib.downloadermiddleware.downloadtimeout.DownloadTimeoutMiddleware': 350,如果你想收到下載頁(yè)面超時(shí)的消息蘸吓,請(qǐng)將中間件放到350以后,process_response才能收到消息撩幽。因?yàn)橄螺d發(fā)生超時(shí)后库继,scrapy會(huì)直接找到scrapy.contrib.downloadermiddleware.downloadtimeout.DownloadTimeoutMiddleware模塊的位置350,通知他窜醉,然后消息依次通知后面的比如400,500,550,700等位置的中間件宪萄。如果你的中間件位置在100之類(lèi)的,那是收不到消息的榨惰。

下面附上默認(rèn)中間件的信息

DOWNLOADER_MIDDLEWARES_BASE
{
    'scrapy.contrib.downloadermiddleware.robotstxt.RobotsTxtMiddleware': 100,
    'scrapy.contrib.downloadermiddleware.httpauth.HttpAuthMiddleware': 300,
    'scrapy.contrib.downloadermiddleware.downloadtimeout.DownloadTimeoutMiddleware': 350,
    'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware': 400,
    'scrapy.contrib.downloadermiddleware.retry.RetryMiddleware': 500,
    'scrapy.contrib.downloadermiddleware.defaultheaders.DefaultHeadersMiddleware': 550,
    'scrapy.contrib.downloadermiddleware.redirect.MetaRefreshMiddleware': 580,
    'scrapy.contrib.downloadermiddleware.httpcompression.HttpCompressionMiddleware': 590,
    'scrapy.contrib.downloadermiddleware.redirect.RedirectMiddleware': 600,
    'scrapy.contrib.downloadermiddleware.cookies.CookiesMiddleware': 700,
    'scrapy.contrib.downloadermiddleware.httpproxy.HttpProxyMiddleware': 750,
    'scrapy.contrib.downloadermiddleware.chunked.ChunkedTransferMiddleware': 830,
    'scrapy.contrib.downloadermiddleware.stats.DownloaderStats': 850,
    'scrapy.contrib.downloadermiddleware.httpcache.HttpCacheMiddleware': 900,
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拜英,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子琅催,更是在濱河造成了極大的恐慌居凶,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,843評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恢暖,死亡現(xiàn)場(chǎng)離奇詭異排监,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)杰捂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)舆床,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事挨队」饶海” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,187評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵盛垦,是天一觀的道長(zhǎng)湿弦。 經(jīng)常有香客問(wèn)我,道長(zhǎng)腾夯,這世上最難降的妖魔是什么颊埃? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,264評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮蝶俱,結(jié)果婚禮上班利,老公的妹妹穿的比我還像新娘。我一直安慰自己榨呆,他們只是感情好罗标,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著积蜻,像睡著了一般闯割。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上竿拆,一...
    開(kāi)封第一講書(shū)人閱讀 51,231評(píng)論 1 299
  • 那天宙拉,我揣著相機(jī)與錄音,去河邊找鬼丙笋。 笑死鼓黔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的不见。 我是一名探鬼主播,決...
    沈念sama閱讀 40,116評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼崔步,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼稳吮!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起井濒,我...
    開(kāi)封第一講書(shū)人閱讀 38,945評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤灶似,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后瑞你,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體酪惭,經(jīng)...
    沈念sama閱讀 45,367評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評(píng)論 2 333
  • 正文 我和宋清朗相戀三年者甲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了春感。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,754評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖鲫懒,靈堂內(nèi)的尸體忽然破棺而出嫩实,到底是詐尸還是另有隱情,我是刑警寧澤窥岩,帶...
    沈念sama閱讀 35,458評(píng)論 5 344
  • 正文 年R本政府宣布甲献,位于F島的核電站,受9級(jí)特大地震影響颂翼,放射性物質(zhì)發(fā)生泄漏晃洒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評(píng)論 3 327
  • 文/蒙蒙 一朦乏、第九天 我趴在偏房一處隱蔽的房頂上張望球及。 院中可真熱鬧,春花似錦集歇、人聲如沸桶略。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,692評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)际歼。三九已至,卻和暖如春姑蓝,著一層夾襖步出監(jiān)牢的瞬間鹅心,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,842評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工纺荧, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留旭愧,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,797評(píng)論 2 369
  • 正文 我出身青樓宙暇,卻偏偏與公主長(zhǎng)得像输枯,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子占贫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容