我们使用云存储来存储大量的弹性搜索结果(来自聚合)。
要并行处理这些大型聚合,我们将它们存储为多行JSON转储。
因此,要执行并行处理,许多实例会立即打开此文件,因此会达到URLFetch速率限制,因为此记录的限制:
并且调用会计入您的网址获取配额,因为该库使用网址提取服务与云存储进行交互。
以下是产生的异常:
以下是打开文件的代码:
import cloudstorage as gcs
def open_file(path, mode, **kwargs):
f = gcs.open(path, mode=mode, **kwargs)
if not f:
raise Exception("File could not be opened: %s" % path)
return f
我们需要一种与云存储通信的方法,绕过URLFetch配额和速率限制,否则我们就无法有效地执行并行处理。
是否有一种从App Engine读取未通过URLFetch路由的GCS文件的方法,就像数据存储API不会产生网址获取速率限制一样?
答案 0 :(得分:1)
不确定这种方法是否与您的应用程序兼容/可用,但是这里......
在并行聚合处理期间,您可以使用GAE数据存储来存储中间聚合结果(更宽松的配额),而只是(如果需要,汇编)将最终结果发送到GCS,而不是将结果直接汇总到GCS文件在单个(或几个)GCS请求中完成聚合。