java - 在 Google App Engine for java 中使用并行处理

标签 java google-app-engine

我有一系列重复性的工作,其中每个工作都必须访问许多不同的网站 - 每个工作的范围从 100 到 10000 个网站。

来 self 在任务队列 API 的 Google 文档中读到的内容。任务可用于将请求发送到带有一些参数(定义为任务的一部分)的内部相对 URL。

我想要的是能够控制流量,例如拥有一个“队列”,其中作为一项作业的一部分仅同时访问 50 个站点,然后是一个更快的队列,其中一项作业最多访问 5000 个站点同时...

如何在 Google App Engine for Java 中完成上述任务?

我能想到的唯一解决方案是像 Korus 这样的并行处理框架,但这并没有为我提供任务队列提供的控制级别......是否有一些简单和/或更好的方法来完成我想要什么?

最佳答案

阿尔温德,

这只需配置队列即可轻松完成。以下是有关如何配置处理速率的相关文档:http://code.google.com/appengine/docs/java/config/queue.html#Defining_Push_Queues_and_Processing_Rates

总之,有几个属性可以帮助您控制应用程序如何处理队列上的任务。它们是:速率、桶大小、最大并发请求。它们中的每一个都会让您限制处理速率。请记住 App Engine 使用 token buckets算法来控制任务执行的速率。

对于第一个示例,您只需设置 <max-concurrent-requests>50</max-concurrent-requests> 即可控制同时访问 50 个站点。

另一个参数只会帮助您设置处理任务的速度,直到您达到该队列的 50 个并发请求。

希望这有帮助!

关于java - 在 Google App Engine for java 中使用并行处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8755234/

相关文章:

java - OpenOffice .xls 导出为 PDF 导致复选框重叠

java - Spring:根据配置文件加载其他属性

java - 在 Google App Engine 上读取静态 XML 文件

java - Google App Engine 不支持 vision api Runtime.addShutdownHook 错误

google-app-engine - 如何在 Google Datastore Viewer 中查询表名或列名中包含斜线的位置?

java - Spring Boot 中的 Google 日历 API

java - 如何在数据库中存储哈希密码?

java - weblogic上下文查找错误: java. rmi.UnmarshalException:解码参数时出错

java - Google App Engine 云端点在哪里?

java - 在 Lucene 3.5.0 中禁用 ConcurrentMergeScheduler