首页 > 解决方案 > 将 Tornado 应用程序部署到 AWS Lambda 时出错

问题描述

我正在尝试一个简单的“Hello World”来使用 Zappa 将 Python-Tornado 应用程序部署到 AWS Lambda。

app.py文件中相同的代码是:

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

def make_app():
    return tornado.web.Application([
        (r"/", MainHandler),
    ])
app = make_app()
app.listen(8891)
if __name__ == "__main__":

    tornado.ioloop.IOLoop.current().start()

我运行后得到的错误zappa deploy dev

Error: Warning! Status check on the deployed lambda failed. A GET request to '/' yielded a 500 response code.

我运行时显示的错误zappa tail

__call__() takes 2 positional arguments but 3 were given

zappa_settings.json文件是:

{
    "dev": {
        "app_function": "app.app",
        "aws_region": "ap-south-1",
        "profile_name": "default",
        "project_name": "dmi-amort",
        "runtime": "python3.6",
        "s3_bucket": "zappa-mekp987ue",
        "manage_roles": false,
        "role_name": "lambda-role",
    }
}

我该如何解决这个问题?

标签: pythonamazon-web-servicesaws-lambdatornadozappa

解决方案


Zappa 基于 WSGI;龙卷风不是。两者不兼容,因此您必须将其中一个替换为替代品。(我不知道将 Tornado 与 Lambda 结合使用的简单方法,因此我建议将 Zappa 与 Flask 结合使用)

在旧版本的 Tornado 中,您可以使用 WGSIApplication 在 WSGI 环境中获得对 Tornado 的部分支持,但这在 Tornado 6.0 中不再可用。


推荐阅读