aws lambda 里怎么实现 waituntil

2024-10-02 09:32:41 +08:00
 rizon

cloudflare 的 worker 和 vercel 里都有一个 waituntil 函数,这个函数可以在 http 请求返回后继续执行异步函数。 但是 aws lambda 里好像没有这种函数,该怎么实现这个效果呢

3011 次点击
所在节点    Amazon Web Services
15 条回复
billzhuang
2024-10-02 09:42:25 +08:00
各个语言自带的异步不行么
rizon
2024-10-02 09:52:13 +08:00
补充一下忘了说了。我是 nodejs 。
因为 http 请求返回后函数就会被直接终止了。所以才需要这个东西,在接口返回数据后依然继续运行。
crazywind
2024-10-02 10:16:09 +08:00
lambda 只有在你代码执行完后才终止,你 hppt 请求做个阻塞,数据返回后直接运行不行吗?
rizon
2024-10-02 10:18:08 +08:00
@crazywind http 响应速度变慢了啊。这个东西场景必然是有的。不然 vercel 和 cloudflare 也不会去做
rizon
2024-10-02 10:19:07 +08:00
@crazywind 哦,不好意思我理解错了。你的意思是 http 请求结束后,继续阻塞运行是吧。
我也想这样,但是不知道 nodejs 里怎么做到
crazywind
2024-10-02 10:21:55 +08:00
直接在 http 请求后面加代码就行了
honk
2024-10-02 11:32:06 +08:00
alansfinal
2024-10-02 11:34:56 +08:00
http response 返回以后 lambda function 就终止了,想实现后台任务可以看这篇 https://aws.amazon.com/blogs/compute/running-code-after-returning-a-response-from-an-aws-lambda-function/
rizon
2024-10-02 12:07:47 +08:00
@alansfinal 靠谱啊兄弟,感谢。
然后再问一句,如果是腾讯或阿里云函数怎么做呢
Belmode
2024-10-02 12:48:43 +08:00
这种一直后台运行,消耗的 GBS 岂不是海量的
jenrey
2024-10-02 15:33:09 +08:00
wudiiiii
2024-10-02 17:08:32 +08:00
把你的异步函数写在另一个 lambda 里,调用一下不就完了
mrcotter2013
2024-10-02 20:56:09 +08:00
一般在 lambda 里直接调用另一个 lambda 需要等待返回的结果,如果需要执行其它异步处理可以使用 SNS 或者 SQS 去触发
ClericPy
2024-10-02 23:45:50 +08:00
听着怎么像是用 step 拆异步,一般 serverless 尽量避免等待和空转吧,保存个上下文逻辑同步调用异步应该可以吧
yuankui
2024-10-03 07:36:45 +08:00
SNS/SQS/EventBridge

先 Google 一下这三个吧,可以满足你的需求。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1077369

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX