如何从云函数触发异步作业



我有一个云函数(Python),它是由http从web客户端触发的,它必须计算一些东西并响应FAST。我想将http请求参数保存到数据库中(用于分析)。

如果我只是启动一个写到我的postgresql,函数将不得不等待它,它将是.

使用PubSub,函数还需要发布并等待响应(文档示例):

# Publishes a message
try:
publish_future = publisher.publish(topic_path, data=message_bytes)
publish_future.result()  # Verify the publish succeeded
return 'Message published.'

Google没有提供在后台自动触发的解决方案http函数被调用时一个pubSub

我如何从函数中获取信息并将其保存到我的DB(任何DB)而不影响函数执行

def cloud_func(request):
request_json = request.get_json()
//save to db async without waiting for respond
//calculate my stuff..
return (result, 200, headers) //to client

如果你在HTTP中使用Cloud Functions触发器,我建议你迁移到Cloud Run,并激活always on CPU参数。

该参数的设计目的是:即使在请求处理上下文之外,也要在后台继续进程


编辑1

你也可以通过云函数来想象一个异步机制。同步函数从用户那里获取数据,在PubSub中发布消息并回复用户。

PubSub消息发布非常快,不会占用太多时间。

然后编写另一个函数,监听PubSub主题并将消息数据保存到数据库中。因为这个函数是异步的,所以你没有时间限制。

相关内容

  • 没有找到相关文章

最新更新