2011-01-14 32 views
0

目前,我的Nokogiri腳本遍歷Google的SERP,直到找到目標網站的位置。它針對每個用戶指定的每個網站的每個關鍵字執行此操作(用戶的上網量爲關鍵字&)。我應該如何在一天中安排很多Google搜索刮擦?

現在,它運行在一個每天都很難安排的耙子中,並通過循環遍歷數據庫中的所有網站來一次性批量處理所有的瑕疵。但是我擔心可擴展性和谷歌與一批請求蜂擁而至。

我想要一個解決方案,可以在一天中進行縮放並運行這些刮擦。我不確定什麼樣的解決方案可用或我真正在尋找什麼。

注意事項:隨着用戶添加和刪除他們的網站和關鍵字,網站/關鍵字的數量每天都在變化。我不打算讓這個問題變得多餘,但是Beanstalkd/Stalker(job queuing)可以用於這種事情嗎?

回答

0

你必須平衡兩個問題:可擴展性很多用戶與Google之間的關係因違反其使用條款而縮小規模。

因此,您的系統將需要能夠分配任務到各種不同的IP來隱藏您的批量刮擦,這表明至少有兩個級別的排隊。一個用於管理所有作業,並將它們發送到每個單獨的IP以供後續搜索,並在每臺單獨的計算機上收集結果和隊列以保存請求的搜索,直到它們執行並返回結果。

我不知道Google的門檻是什麼(我確信他們不會做廣告),但超過他們並且被切斷顯然會對您正在嘗試的操作造成破壞性,因此您的簡單循環耙任務正是你不應該在一定數量的用戶之後做。

所以是的,使用某種排隊,但意識到你可能有一個不同的目標,從隊列的典型目標,你想故意拖延作業,而不是卸載單詞,以避免UI延遲。所以你會想方設法減慢隊列的速度,而不是在工作到達隊列後才執行工作。

因此,基於DelayedJob和BackgroundJobs粗略的檢查,它看起來像DelayedJob有你需要與run_at屬性是什麼。但我只是在這裏猜測,我相信一位專家會有更多話要說。

0

SaaS解決方案:http://momentapp.com/「的推出延遲了計劃的http請求的工作」 - 免責聲明一)測試版B)我與該服務關聯

相關問題