是否有任何方式運行scrapy作爲bash腳本的一部分,並且只運行一段時間? 也許在X小時後模擬一個Ctrl-C + Ctrl-C?在腳本中運行scrapy X小時?
0
A
回答
0
0
Scrapy提供CLOSESPIDER_TIMEOUT選項停止指定的時間段之後爬行。
雖然這不是一個硬性限制 - Scrapy仍然會處理它已經下載的所有請求,但它不會從調度程序中獲取新的請求;換句話說,CLOSESPIDER_TIMEOUT模擬Ctrl-C,而不是Ctrl-C + Ctrl-C,並試圖優雅地停止蜘蛛。這通常不是一個壞主意,因爲殺蜘蛛可能會導出的數據文件被破壞。
spider活着多長時間取決於網站和重試&併發設置。默認的DOWNLOAD_TIMEOUT是180s;請求可以重試2次,這意味着每個請求可能需要大約10分鐘才能在最差的情況下完成。 CONCURRENT_REQUESTS默認爲16,因此下載器中最多有16個請求,但可能會根據您抓取的內容並行下載。 Autothrottle或CONCURRENT_REQUESTS_PER_DOMAIN選項可能會限制單個域並行執行的多個請求。
因此,在絕對最壞的情況下(順序下載,所有請求都沒有響應並重試2次),蜘蛛可能會使用默認設置掛起約3小時。但通常在實踐中,這個時間要短得多,幾分鐘。因此,您可以將CLOSESPIDER_TIMEOUT設置爲一個值,例如比你的X小時少20分鐘,然後使用額外的管理員(比如@lufte建議的GNU超時)來實現硬超時,如果關機時間超長,就殺死一個蜘蛛。
相關問題
- 1. PHP運行小時腳本
- 2. 從scrapy腳本運行多個蜘蛛
- 3. 錯誤運行scrapy從腳本
- 4. 在後臺運行Cron作業腳本並運行15小時
- 5. 幾小時後PHP運行腳本
- 6. Scrapy在特定分析中運行javascript腳本
- 7. 了Python腳本運行在X:00
- 8. 從腳本運行scrapy時發生內存溢出
- 9. 腳本在命令運行時運行
- 10. 運行shell腳本時sh -x vs bash -x
- 11. 在啓動時運行shell腳本(OS X)
- 12. 使用終端在啓動時運行shell腳本? (Mac OS X)
- 13. scrapy爬行在命令中運行良好,但從腳本運行時遇到一些問題
- 14. 在.bashrc中運行腳本
- 15. 文本/ X-小腳本無法在Chrome
- 16. OS X外殼腳本運行ntpdate
- 17. 每x分鐘運行phantomjs腳本
- 18. 在腳本中運行IPython
- 19. 在php中運行腳本
- 20. 在ajax中運行腳本
- 21. 運行腳本,每2個小時,在X模式的6倍,6倍,每24小時
- 22. 在腳本/運行器中運行EventMachine
- 23. 在C#中運行腳本
- 24. 在EMS中運行腳本
- 25. 在FreeBSD中運行腳本
- 26. 運行配置時運行腳本
- 27. 同時運行php腳本
- 28. 如何在腳本運行時啓用執行腳本?
- 29. 在Azure上每小時運行Powershell腳本
- 30. 在線運行ruby腳本