首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于App的异步urlfetch

基于App的异步urlfetch
EN

Stack Overflow用户
提问于 2009-12-27 05:50:56
回答 3查看 3K关注 0票数 3

我的应用程序需要对每个请求执行许多数据存储操作。我想并行运行它们,以获得更好的响应时间。

对于数据存储更新,我正在进行批处理处理,因此它们都是异步进行的,这节省了许多毫秒。App引擎允许多达500个实体并行更新。

但我还没有找到允许并行执行不同类型的数据存储获取的内置函数。

由于App确实允许urlfetch调用异步运行,所以我为每种类型创建了一个getter URL,它以JSON格式的文本返回查询结果。现在,我的应用程序可以对这些URL执行异步URLs调用,这可以并行处理数据存储获取。

这种技术适用于少量的并行请求,但是attempting在尝试同时运行超过5或10个这些urlfetch调用时会抛出错误。

我现在只是在测试,所以每个urlfetch都是相同的查询;因为它们在小卷中工作很好,但在多个同时请求中开始失败,所以我认为它肯定与异步urlfetch调用有关。

我的问题是:

  1. 可以异步运行的urlfetch.create_rpc()调用的数量是否有限制?
  2. 同步urlfecth.fetch()函数具有一个“deadline”参数,该参数允许该函数在失败前等待10秒的响应。有没有办法告诉urlfetch.create_rpc()等待响应多长时间?
  3. 下面显示的错误意味着什么?
  4. 是否有更好的服务器端技术来并行运行不同类型的数据存储取? 文件"/base/python_lib/versions/1/google/appengine/api/apiproxy_stub_map.py",行501,在get_result返回self.__get_result_hook(self)文件"/base/python_lib/versions/1/google/appengine/api/urlfetch.py",第331行中,在_get_fetch_result raise (str(Err )) InterruptedError中:(等待()请求被另一个回调的异常中断:',DownloadError('ApplicationError: 5‘,)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-05 02:35:26

由于App允许异步use获取调用,但不允许异步数据存储获取,所以我试图使用urlfetch并行地从数据存储检索。

异步数据存储的缺乏是一个公认的问题:

http://code.google.com/p/googleappengine/issues/detail?id=1889

现在有了一个允许异步查询的第三方工具:

http://code.google.com/p/asynctools/

异步工具是一个库,允许您并行执行Google调用。API调用可以混合在一起并排队,然后所有调用都并行启动。

这正是我要找的。

票数 2
EN

Stack Overflow用户

发布于 2009-12-27 15:06:59

虽然我担心我不能直接回答你提出的任何问题,但我认为我应该告诉你,你所有这些方面的研究可能不会为你的问题找到一个可行的解决方案。

问题是,数据存储写入要比读取时间长得多,所以如果您找到了一种方法来最大限度地增加可能发生的读取数量,那么您的代码就会耗尽很长时间,才能对您所读的所有实体进行相应的写入。

我会认真考虑重新考虑数据存储类的设计,以减少需要进行的读写次数,因为这将很快成为应用程序的瓶颈。

票数 0
EN

Stack Overflow用户

发布于 2009-12-30 06:59:59

您考虑过使用TaskQueues来对以后执行的请求进行排队吗?

如果任务返回4xx状态,它将被视为失败,并将在以后重新尝试-因此您可以将错误传回并让任务队列处理重试请求,直到成功为止。此外,通过对存储桶大小和速率的一些实验,您可能会让Task队列放慢请求的速度,从而使数据库无法最大化

还有一个很好的包装器(deferred.defer),它使事情变得更简单--您可以对应用程序中的任何函数(几乎)进行延迟调用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1965297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档