谷歌应用引擎上的任务队列或多线程

时间:2012-01-28 17:25:57

标签: python multithreading google-app-engine web2py task-queue

我在Google App Engine上安装了我的服务器 我的一项工作是将大量记录与另一份记录相匹配。 这需要很长时间,如果我必须匹配10000记录与100。 什么是实现这一目标的最佳方式。

我,使用Web2py堆栈并在Google App Engine上部署我的应用程序。

3 个答案:

答案 0 :(得分:1)

也许我误解了一些东西,但这听起来像是任务队列的完美匹配,我无法看到多线程将如何帮助,因为我认为这只是你可以同时提供许多响应,它赢了'如果您的回复时间超过30秒,请提供帮助。

使用任务,您可以添加它,然后处理直到时间限制,然后如果您没有按时间限制完成作业,则使用剩余任务重新创建另一个任务。

答案 1 :(得分:1)

GAE不支持多线程代码,因此您无法明确使用它。

GAE本身可以是多线程的,这意味着一个前端实例可以同时处理多个http请求。

在您的情况下,实现并行任务执行的最佳方法是任务队列。

答案 2 :(得分:1)

您正在做的基本结构是让cron作业负责将工作分成更小的单元,并使用任务队列执行每个单元。每个任务的有效负载将是标识第一组中的实体(例如一组密钥)的信息。每个任务将执行将第一组中的实体与第二组中的实体连接所需的任何查询,并存储中间(或可能是最终)结果。您可以调整有效负载大小和任务队列速率,直到它按您希望的方式执行。

如果需要聚合每个任务的结果,您可以让每个任务记录完成并测试是否所有任务都已完成,或者只是有另一个轮询完成记录的作业,以启动聚合。当MapReduce功能可以更广泛地使用时,它将成为执行此类工作的框架。

http://www.youtube.com/watch?v=EIxelKcyCC0 http://code.google.com/p/appengine-mapreduce/