最近我接手了 Django 项目,其中一个组件是 Scrapy scrapprs (很多 - 核心功能)。值得补充的是,scrapers 只需每天多次向数据库提供数据,django Web 应用程序就会使用这些数据。
__Scraper__s 可以直接访问 Django 模型,但在我看来这不是最好的主意(混合职责 - django 应该充当 Web 应用程序,而不是 scrapers,不是吗?) 。例如,在这种拆分之后,抓取器可以无服务器运行,从而节省资金并且仅在需要时才生成。
我至少将其视为架构中的独立组件。但是,如果我将 scrapers 与 Django 网站分开,那么我也需要在那里填充数据库 - 并且在 Django web 应用程序或抓取应用程序中更改模型将需要在第二个应用程序中进行更改来调整。
我还没有看到过关于拆分这些应用程序的真正文章。
这里的最佳实践是什么?值得拆分吗?您将如何组织云解决方案(例如 AWS)的部署?
谢谢
最佳答案
嗯,这是一个很大的讨论,我也有同样的“好问题”。
简短回答:
我建议你,如果你想将其分离,你可以使用不同的方案将逻辑与数据分离。我以前做过,这是一个很好的方法。
长答案:
问题是:
- 从抓取工具收集信息后,您是否会利用它们做一些事情(聚合、处理或其他任何事情)?
如果答案是是,则可以将其分成 2 DB。一个包含原始信息,另一个包含经过处理的信息(将与 Django 共享)。
如果答案是否,我认为没有任何理由将其分开。最后,Django 只是数据的可视化工具。
- Django 网站正在使用大量存储的数据,对于单一职责,您希望将其与抓取的数据分开吗?
如果答案是是,请通过架构甚至数据库将其分隔。
如果答案是否,您可以将其存储在Django的同一个数据库中。最后,重要的数据将是提取的数据。 Django 可能会有配置的数据库或其他额外数据来管理网络,但数据库的很大一部分将是爬行/处理的数据。取决于您将其分离和维护需要多少费用。如果你从头开始做,我会单独做。
关于python - Django + Scrapy 多爬虫架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59719318/