0

我有一个在本地服务器上运行的服务,使用Python 线程库编写。把它想象成一种网络爬虫。它使用 50 个线程。我想将它部署在Amazon Web Services云上并扩大规模,因此它使用更多线程。

简单地说,我有两个队列Qinput带有 URL 和Qoutput带有页面内容。线程从中挑选 URL Qinput,获取网页内容并将其放入Qoutput

问题:我只是将线程数增加到 500、5,000 或 50,000 并且 AWS + Python 将处理它就足够了吗?在 AWS 上移植多线程服务时,我应该期望该服务无缝运行还是应该注意一些“标准”设计缺陷?

我知道Global Interpreter Lock虽然它在这里不应该是一个问题,因为线程的主要任务是在抓取/抓取页面时在解释器外部调用

4

1 回答 1

3

任何单个实例都有其限制。您可能会在您的实例中产生相当多的线程,特别是如果您选择较大的线程。但是你会在额外的线程上得到减少的回报,直到它不再帮助你获得更多的性能。

但是,如果您希望系统的扩展超出单个实例的限制,最好能够在多个实例上运行您的系统。那么你的决定只是操作性的,而不是技术性的。我认为如果你在 AWS 环境中运行,它允许你几乎无穷无尽的操作资源,你应该考虑一下。

您还可以查看SQS,它基本上是一个分布式队列系统。它将允许您根据需要同步尽可能多的实例的工作。

于 2013-01-09T12:14:23.153 回答