我的应用程序需要对每个请求执行许多数据存储操作。我想并行运行它们以获得更好的响应时间。
对于数据存储更新,我正在执行批量放置,因此它们都是异步发生的,从而节省了很多毫秒。App Engine 最多允许并行更新500 个实体。
但是我还没有找到一个允许并行执行不同类型的数据存储获取的内置函数。
由于 App Engine 确实允许 urlfetch 调用异步运行,因此我为每种类型创建了一个 getter URL,它将查询结果作为 JSON 格式的文本返回。现在我的应用程序可以对这些 URL 进行异步 urlfetch 调用,这可以并行化数据存储区的获取。
此技术适用于少量并行请求,但 App Engine 在尝试同时运行超过 5 或 10 个此类 urlfetch 调用时会引发错误。
我现在只是在测试,所以每个 urlfetch 都是相同的查询;因为它们在少量的情况下工作正常,但由于同时请求的数量超过少数而开始失败,我认为它一定与异步 urlfetch 调用有关。
我的问题是:
- 可以异步运行的 urlfetch.create_rpc() 调用的数量是否有限制?
- 同步 urlfecth.fetch() 函数有一个“deadline”参数,该参数将允许函数在失败前等待长达 10 秒的响应。有没有办法告诉 urlfetch.create_rpc() 等待响应多长时间?
- 下面显示的错误是什么意思?
是否有更好的服务器端技术来并行运行不同类型的数据存储提取?
文件“/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", line 331, in _get_fetch_result raise DownloadError(str(err)) InterruptedError: ('The Wait() request was interrupted from an exception from another callback:', DownloadError('ApplicationError: 5 ',))