我正在编写一个使用 Scrapy 的 Django Web 应用程序,并且在本地运行良好,但我想知道如何设置一个生产环境,让我的蜘蛛定期自动启动(我的意思是,一旦蜘蛛完成它的工作,它就会重新启动一段时间后……例如 24 小时后)。目前我使用自定义 Django 命令启动我的蜘蛛,其主要目标是允许使用 Django 的 ORM 来存储抓取的项目,所以我运行:
python manage.py scrapy crawl myspider
结果存储在我的 Postgres 数据库中。我安装了scrapyd,因为它似乎是在生产中运行 scrapy 的首选方式,但不幸的是,如果不编写猴子补丁(我想避免),我就无法使用它,因为它使用 JSON 作为其 Web 服务 API 和我得到“modelX 不是 json 可序列化”异常。我查看了django-dynamic-scraper,但它似乎不像 Scrapy 那样灵活和可定制,事实上在他们说的文档中:
由于它简化了事情,DDS 不适用于所有类型的抓取工具,但它非常适合定期抓取带有更新项目列表的网站的相对常见情况
我也想过使用 crontab 来安排我的蜘蛛......但是我应该在什么时间间隔运行我的蜘蛛?如果我的 EC2 实例(我将使用 amazon webservices 来托管我的代码)需要重新启动,我必须手动重新运行我的所有蜘蛛......嗯......事情变得复杂......所以......什么可以是生产环境的有效设置吗?你如何处理它?你有什么建议?