我正在尝试一个简单的“ 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;龙卷风不是。两者不兼容,因此您必须将其中之一替换。 (我不知道将龙卷风与Lambda结合使用的简单方法,因此建议将Zappa与Flask结合使用)
在旧版本的Tornado中,您可以使用WGSIApplication在WSGI环境中获得对Tornado的部分支持,但这在Tornado 6.0中不再可用。