我有以下示例代码。这是作为Yandex.Functions运行的(几乎等于AWS函数)
def handler(event, context):
# some long processing is here
text = result_of_long_processing()
return {
'response': {
'text': text
},
}
我应该按照以下方式修改代码:
long processing
花费的时间少于3秒,则应返回此处理的结果wait more
),并继续处理李>我怎样才能做到呢
我将根据这个回答,简单的回答是你不能
Lambda函数在执行结束时返回一些值。一旦您返回,它将不会继续执行。当您可以创建后台线程时,当主线程返回值时,该线程将挂起
这意味着您需要创建一个系统体系结构来支持长时间运行的任务。这至少包括:
在这样的系统中,“网关”功能创建一个唯一标识符(通常是UUID)。然后调用第二个“处理”函数,将UUID传递给它
处理函数完成它的工作,并将结果写入由UUID键入的数据存储
“网关”函数可以立即将UUID返回给调用者,或者选择等待(轮询数据存储)您想要等待的时间
如果在“网关”完成轮询时结果不可用,则客户端将不得不承担责任:使用UUID调用“网关”,直到结果可用
相关问题 更多 >
编程相关推荐