python - 将 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",
}
}
我该如何解决这个问题?
解决方案
Zappa 基于 WSGI;龙卷风不是。两者不兼容,因此您必须将其中一个替换为替代品。(我不知道将 Tornado 与 Lambda 结合使用的简单方法,因此我建议将 Zappa 与 Flask 结合使用)
在旧版本的 Tornado 中,您可以使用 WGSIApplication 在 WSGI 环境中获得对 Tornado 的部分支持,但这在 Tornado 6.0 中不再可用。
推荐阅读
- drupal - Drupal如何更新模块数据库
- java - 使用 firebase 文档的自定义用户声明的示例不起作用
- r - 排序 expss 输出表
- kubernetes - kubernetes configmap 在 yaml 配置中设置源文件
- mysql - MySQL 8 错误 #14 EE_CANT_CHSIZE
- python - 在 matplotlib 中的不同轴之间绘制填充形状
- javascript - 类与原型 Array.isArray
- django - 如何使用 CheckboxSelectMultiple 创建可以为空的搜索
- reactjs - 如何在 codepen 中将漂亮的打印应用于 JSX?
- python - 有状态的 RNN 在 Keras 函数模型中具有错误的张量形状