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