gpt4 book ai didi

sockets - Lambda + API网关: Long executing function return before task finished

转载 作者:行者123 更新时间:2023-12-03 11:56:27 26 4
gpt4 key购买 nike

我在Lambda中有一个函数,根据输入的不同,该函数最多可以执行30秒。
该函数链接到API网关,因此我可以通过POST调用它,但是遗憾的是,API网关的限制是30秒钟,因此,如果我的函数运行时间更长,我会从POST中返回“内部服务器错误”。

我看到2种解决方案:

  • 创建一个“套接字”,而不是一个简单的POST,该POST连接到lambda函数,不知道这是否可行或如何工作。
  • 在lambda函数实际完成之前,将通知返回到api网关。这对于我的用例是可以接受的,但是我不确定这将如何工作。

  • 该函数在Python3.6中进行了编码,因此我可以访问事件和上下文对象。

    最佳答案

    Return a notification to api gateway before the lambda function is actually finished. This is acceptable for my use case, but I am not sure again how would this work.



    不幸的是,在Lambda完成之前,您将无法返回结果。否则,如果您尝试执行Lambda,例如通过多线程,AWS将中断Lambda的执行。

    我建议您创建以下系统:
  • API网关向Kinesis流发送请求,并返回成功放置的响应。响应将包含Kinesis记录的SequenceNumber。 (How to do it)
  • Lambda由Kinesis Stream Event调用,处理请求,并以SequenceNumber为ID将您的工作完成(或完成的结果)保存到DynamoDB。
  • 您调用另一个API网关方法和SequenceNumber来检查DynamoDB中作业的状态(如有必要)。

  • 如果您只需要运行Lambda而不知道作业结果,则可以避免使用DynamoDB。

    关于sockets - Lambda + API网关: Long executing function return before task finished,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49449217/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com