【发布时间】:2017-03-14 15:13:31
【问题描述】:
我正在运行一个独立的 Scrapy 蜘蛛,它存在于单个 .py 文件中。如果服务器发生故障/断电/脚本可能失败的任何其他原因,是否有一种优雅的方法可以确保我能够在恢复后恢复运行?
可能类似于内置的 JOBDIR 设置?
【问题讨论】:
标签: python web web-scraping scrapy web-crawler
我正在运行一个独立的 Scrapy 蜘蛛,它存在于单个 .py 文件中。如果服务器发生故障/断电/脚本可能失败的任何其他原因,是否有一种优雅的方法可以确保我能够在恢复后恢复运行?
可能类似于内置的 JOBDIR 设置?
【问题讨论】:
标签: python web web-scraping scrapy web-crawler
如果你有一个独立的脚本,你仍然可以使用 JOBDIR 选项,例如你可以在custom_settings属性中设置一个值:
class MySpider(scrapy.Spider):
custom_settings = {
'JOBDIR': './job',
}
#...
或者,您可以在创建 CrawlerProcess 时设置此选项(如果您正在使用该选项在脚本中运行蜘蛛):
process = CrawlerProcess({'JOBDIR': './job'})
process.crawl(MySpider)
process.start()
【讨论】:
有一个完整的documentation page 涵盖了这个问题:
要启动一个启用了持久性支持的蜘蛛,运行它就像 这个:
scrapy crawl somespider -s JOBDIR=crawls/somespider-1然后,您可以随时安全地停止蜘蛛(通过按 Ctrl-C 或发送信号),然后通过发出相同的命令恢复它:
scrapy crawl somespider -s JOBDIR=crawls/somespider-1
【讨论】:
您可以使用supervisor。
[program:foo]
command=~/script_path/script.py
【讨论】: