larbin程序重啓方案

問題說明:larbin程序爬取某個網站,在爬取完所有連接後,如果有定義爬取完後exit(),則程序會終止進程;如果沒有定義,larbin程序只會會輸出一些統計信息,其他貌似都沒工作了,對於新增的連接也不會爬取。

鑑於以上問題,larbin程序需要重啓。一下介紹兩個方案,代碼就不貼了。

 

 

方案一:

主要思想:

判斷隊列( URLsDisk->getLength(),URLsDiskWait->getLength() )是否爲空,如果隊列爲空則說明已經沒有需要爬取的url連接了,larbin程序需要重新啓動。

方案二:

主要思想:

定義urls(到目前已經獲取的url數量),pages(到目前已經獲取的pages),old_url8秒前已經獲取的url數量),old_pages8秒前已經獲取的page數量)

如果目前獲取的urlpages數量和8秒前獲取的urlpages數量相等,則判斷larbin程序已經完成了爬取,需要重啓。

重啓步驟,先創建子進程,子進程啓動新的larbin程序後,父進程殺死原來的larbin程序。

 

 

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