云函数http -在结果到达时实时发回



我有一个Cloud Function(Python)谁做一些长(不重)的计算依赖于其他外部api,所以响应可能需要一些时间(30秒)。

def test(request):
request_json = request.get_json()
for x in y:
r = get_external_api_respond()
calculate r and return partial respond

问题和问题是:

  1. 是否有一种方法可以在到达Function时开始返回web客户端结果?现在我知道http只能返回一次消息并关闭连接。

  2. 在这种情况下分页将太复杂而无法实现,因为结果依赖于先前的结果等。是否有任何解决方案,在谷歌云返回实时结果,因为他们来了?其他类型Function?

  3. 如果函数保持打开一分钟,即使它没有繁重的计算,只是在循环中做多个API请求,它会非常昂贵吗?

您需要使用一些中间存储,您将从函数中充值,并从web页面读取HTTP请求。我不认为这是生产者-消费者模式,因为你只生产一次,但你需要消费多少次就消费多少次。

如果您使用Azure,您可以使用表存储或Blob存储。

https://learn.microsoft.com/en-us/azure/storage/tables/table-storage-overviewhttps://azure.microsoft.com/en-gb/products/storage/blobs/

使用Table,您可以在计算完记录后添加记录。

对于Blob,您可以使用Append Blob类型,或者只是再次读写Blob(看起来像是使用单个生产者)。

作为奖励,您可以跨多个函数分配任务并更快地获得结果。这叫做横向扩展

最新更新