我有一个非常简单的函数(py3.6),我正在sam-local
通过start-api
运行,我正在使用一个充满curl
帖子的shell脚本进行测试:< / p>
lambda_handler(event, context):
try:
json_body = event["body"]
if not validate_json(json_body):
raise Exception("Bad JSON")
post_to_dynamo_db_local(json_body)
except Exception as err:
return {
'statusCode': 999,
'headers': {"x-custom-header": "my custom header value"},
'body': "\nException! " + str(err)
}
return {
'statusCode': 200,
'headers': {"x-custom-header": "my custom header value"},
'body': "hello world"
}
在95%的情况下,测试在正确的用例中运行良好,但在validate_json
引发Exception
尽管被捕获或post_to_dynamo_db_local
短路时失败(不一致)并提前返回(对象已在DB中,返回)
*我说正确的用例大约有95%的时间是有效的,因为有时候我触摸它会失败,但我触摸的东西可能是原因。虽然未经证实!
根据sam-local
控制台
START RequestId: 8c7cf7ce-2926-4ce4-ba3c-0fac95a810b0 Version: $LATEST
END RequestId: 8c7cf7ce-2926-4ce4-ba3c-0fac95a810b0
REPORT RequestId: 8c7cf7ce-2926-4ce4-ba3c-0fac95a810b0 Duration: 162 ms
Billed Duration: 200 ms Memory Size: 128 MB Max Memory Used: 24 MB
但是curl
在请求超时之前没有收到回复:
{ "message": "Internal server error" }
大约在同一时间sam-local
控制台响应:
Error invoking python 3.6 runtime: io: read/write on closed pipe
有什么想法吗?对于这么简单的任务,函数运行时似乎异常高,我不认为内存应该是一个问题......
案件流程失败:
开始 - &gt;检查输入(字符串) - &gt;提出异常 - &gt;捕获异常 - &gt;返回响应(字符串)
附加:一些有用的东西: