错误消息:“'NoneType' 对象不可调用”。 - 从 zappa 接收到在 AWS Lambda 上部署的 django 应用程序

Error message: "'NoneType' object is not callable". - received from zappa deployed django application on AWS Lambda

使用 zappa 将我的 django 应用程序部署到 lambda 后,我 运行 遇到错误。

这是错误:

{'message': 'An uncaught exception happened while servicing this request. You can investigate this with the `zappa tail` command.', 'traceback': ['Traceback (most recent call last):', ' File /var/task/handler.py, line 540, in handler with Response.from_app(self.wsgi_app, environ) as response:', ' File /var/task/werkzeug/wrappers/base_response.py, line 287, in from_app return cls(*_run_wsgi_app(app, environ, buffered))', ' File /var/task/werkzeug/wrappers/base_response.py, line 26, in _run_wsgi_app return _run_wsgi_app(*args)', ' File /var/task/werkzeug/test.py, line 1119, in run_wsgi_app app_rv = app(environ, start_response)', TypeError: 'NoneType' object is not callable]}

这些是我的 zappa 设置:

{
  "production": {
    "aws_region": "eu-west-2",
    "django_settings": "app.settings",
    "profile_name": "deployment",
    "project_name": "app",
    "runtime": "python3.6",
    "s3_bucket": "zappa-deployment-uploads",
    "slim_handler": true,
    "exclude": [".ebextensions/", ".elasticbeanstalk/", "webpack/", "app/static/"],
    "vpc_config" : {
    "SubnetIds": [ "..."],
    "SecurityGroupIds": ["..."]
  }
}

我已确保我的 API 网关主机名已添加到我的允许主机设置并重新部署。

我调用了 zappa tail,但它给了我一个更短的错误响应“'NoneType' object is not callable”。

谁能理解我为什么会得到这个?

您的代码中出现异常。我发现 NoneType 是使用 AWS Lambda 和 Zappa 时的一般错误,它掩盖了真正的问题。

一些调试步骤:

  1. 当您 运行 python manage.py runserver
  2. 时,确保您的代码在本地工作
  3. 在代码的不同位置输出控制台消息,运行 zappa tail 识别有问题的代码部分
  4. 重复上述选项,直到缩小问题范围。

我 运行 遇到了类似的问题,尝试安装不同版本的 flask,发现它实际上在我的 zappa 配置文件中。我有 "slim_handler" : "True",删除它解决了我的问题。