【发布时间】:2021-05-23 00:03:25
【问题描述】:
我在 C# 中有一个带有简单 foreach 循环的 lambda。 foreach 循环为 List 中的每个项目调用一个 python lambda..
foreach (NOAAQInfo noaaqInfo in batchItemsForMyPython)
{
Console.WriteLine($"invoking MyPython api for: {noaaqInfo.Email}");
Task<NOAAQInfo> t = SendToMyPython.executeLambda(dbLogic, noaaqInfo, context);
Task tCleanup = t.ContinueWith((antecedent) =>
{
Console.WriteLine($"MyPython success: {antecedent.Result.Email}");
});
}
这是实际调用 Python Lambda 的函数。
internal static async Task<NOAAQInfo> executeLambda(DBLogic dbLogic, NOAAQInfo noaaqInfo, ILambdaContext context)
{
AmazonLambdaClient amazonLambdaClient = new AmazonLambdaClient();
NOAAQInfo noaaqInfoResult = null;
InvokeRequest request = new InvokeRequest()
{
FunctionName = MyPython,
Payload = JsonConvert.SerializeObject(payload)
};
CancellationToken cancellationToken = new CancellationToken();
string messageStr = null;
InvokeResponse invokeResponse = null;
invokeResponse = await amazonLambdaClient.InvokeAsync(request, cancellationToken);
if (invokeResponse.StatusCode == (int)HttpStatusCode.OK)
{
if (resp.body != VerifiedStrResponse)
{
noaaqInfoResult = noaaqInfo;
}
}
return noaaqInfoResult;
}
如果我查看 C# lambda 的日志,我可以看到被发送到 python lambda 的 2 个项目:
2021-02-19T14:04:39.837-08:00 invoking MyPython api for: testAAA@GMAIL.COM
2021-02-19T14:04:40.057-08:00 invoking MyPython api for: testBBB@GMAIL.COM
但是,当我查看 Python lambda 日志时,我只看到收到了一项:
[INFO] 2021-02-19T14:04:40.837-08:00Z adafecd6-8f32-4b7f-8d46-94465ac03a63 received params:{'Email': 'testAAA@GMAIL.COM'}
为什么我在 python 日志中没有看到 testBBB?即应该有 2 次 python lambda 调用。
我还仔细检查了没有额外的日志流,并且 python lambda 没有设置任何并发限制。
在这个问题上真的让我摸不着头脑,因为我没有收到任何错误。只是只有一个项目被发送到 python lambda。
此外,ContinueWith() 中的日志记录行也没有显示。
【问题讨论】:
-
推荐阅读 stackoverflow.com/help/minimal-reproducible-example 以获取有关为问题创建最小代码 sn-ps 的指南。
标签: c# .net amazon-web-services aws-lambda