我正在考虑在aws lambda中开火并忘记函数调用。
我正在使用FASTAPI
我已完成以下操作:
SELECT r.RESERVATION_ID, r.RESERVATION_DATE, c.CUSTOMER_ID, c.FIRST_NAME,t.TRIP_ID, o.TRIP_DATE,TP.CATEGORY_NAME
FROM CUSTOMER c
INNER JOIN RESERVATION r ON r.CUSTOMER_ID=c.CUSTOMER_ID
INNER JOIN TOURTRIP_RESERVATION t ON r.RESERVATION_ID=t.RESERVATION_ID
INNER JOIN TOUR_TRIP O ON t.TRIP_ID=o.TRIP_ID
LEFT JOIN TOUR_SITES TS ON TS.TOUR_SITEID = O.TOUR_SITEID
INNER JOIN TOUR_PACKAGE TP ON TP.CATEGORY_ID = TS.CATEGORY_ID
WHERE AGENT_ID IS NULL;
我期望process_trigger_data函数像火灾一样被遗忘,但是正在发生的事情是我的lambda函数正在等待process_trigger_data在“返回响应”之前完全执行。
我该怎么做,以至于忘却了函数调用? 我试过创建一个process_trigger_data的api函数,以便它应该运行另一个aws实例,但是我得到的结果是一样的,它在返回响应之前等待完成
我应该怎么做?
谢谢
答案 0 :(得分:0)
因此,当您在Lambda中执行任务时,它将等待所有进程完成才执行/或超时。
有两种方法可以解决这个问题。
1)您可以使用SNS发布带有其他Lamdba订阅的有效负载的消息。
这个问题的陷阱是,如果您的函数变得很忙,那么Lambda可以默认扇出很多-如果您有来自这些Lambda的数据库连接,那么它可以最大程度地增加连接池。
2)如果可能有很多这样的任务,SQS是一个更好的选择,因为使用您的Lambda会尽可能快地处理消息而不会大张旗鼓。
我建议使用SQS:https://docs.aws.amazon.com/lambda/latest/dg/with-sqs.html
SNS文档在这里:https://docs.aws.amazon.com/lambda/latest/dg/with-sns.html