gpt4 book ai didi

java - 有没有办法从 Java AWS Lambda RequestStreamHandler 获取 'return early'

转载 作者:行者123 更新时间:2023-12-01 13:30:41 27 4
gpt4 key购买 nike

我正在使用 API 网关通过 https 调用 Java AWS Lambda。

我有一个案例,我很快就知道我想从我的 Lambda 返回什么状态,但我还有更多工作要做,这不会影响状态。

有没有办法向调用者提供状态,但不结束 Lambda 的执行?

我试过了:

@Override
public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) throws IOException {
JsonWriter writer = new JsonWriter(new OutputStreamWriter(outputStream));
writer.beginObject();
writer.name("statusCode").value("200");
writer.endObject();
writer.flush();
writer.close();
try {
// this wait represents other work my Lambda is doing,
// e.g. DB calls, requests to other webservices
Thread.sleep(10 * 1000);
} catch (InterruptedException e) {
}
}

但调用者仍需要 10 秒钟才能看到状态。
有什么办法可以做我想做的事吗?

我想让我的应用程序尽可能简单,并尽可能少地启动 Lambda,而不会让调用者等待不必要的时间。

最佳答案

如果您知道应该返回给调用者的状态并且您必须做的其他工作不会影响状态代码或 http 响应,那么为什么要保持 lambda 执行(这是一个坏主意,因为您按执行时间 x 内存重新计费)?

使用 SNS 触发另一个 lambda 以继续该过程。它看起来像:

caller      ->      Lambda   ->   SNS  ->  Lambda
|
caller <---(status)----

关于java - 有没有办法从 Java AWS Lambda RequestStreamHandler 获取 'return early',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46068936/

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