AWS(SAM本地)Lambda读取/写入关闭管道错误

时间:2018-02-20 01:46:04

标签: python-3.x amazon-web-services aws-lambda dynamo-local aws-sam-cli

我有一个非常简单的函数(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;返回响应(字符串)

附加:一些有用的东西:

  • 在卷发之间睡觉(尝试长达10秒,但偶尔也会出现错误
  • 不缓存对表的引用(因此现在应该很快收集它们

0 个答案:

没有答案