我有一个服务器写在Python 2.7/龙卷风我正在尝试将其部署在 AWS 上。
我碰到AWS 弹性豆茎这看起来是部署代码的一种非常方便的方法。
我经历过这个tutorial http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-flask.html并能够部署 Flask 示例应用程序。
但是,我不知道如何部署测试龙卷风应用程序,如下所示。
import tornado.web
import tornado.ioloop
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
if __name__ == "__main__":
app = tornado.web.Application([
(r"/.*", MainHandler),
])
app.listen(5000)
tornado.ioloop.IOLoop.current().start()
当我尝试部署上述应用程序时,我的所有请求都会导致错误 500,并且我不知道如何解决此问题,因为我不知道 Flask 示例是如何工作的,但 Tornado 代码却不是。
The 要求.txt文件中有一个 torchado==4.4.2 的条目。
我尝试添加一些日志语句来写入外部文件,但该文件没有被创建,这可能意味着应用程序甚至没有启动。
如果有人可以提供一些,那就太好了在 AWS-EB 上部署 Tornado 应用程序的步骤或者我应该如何开始解决这个问题。
如果我需要提供更多详细信息,请告诉我。
Thanks!
Update
在注意到 httpd error_log 文件、AWS 文档和 Berislav Lopac 的答案中的错误后,我找到了实现 Tornado 服务器的正确方法。
这是一个简单的服务器
import tornado.web
import tornado.wsgi
import tornado.ioloop
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
webApp = tornado.web.Application([
(r"/", MainHandler),
])
# Wrapping the Tornado Application into a WSGI interface
# As per AWS EB requirements, the WSGI interface must be named
# 'application' only
application = tornado.wsgi.WSGIAdapter(webApp)
if __name__ == '__main__':
# If testing the server locally, start on the specific port
webApp.listen(8080)
tornado.ioloop.IOLoop.current().start()
附加链接:龙卷风 WSGI 文档 http://www.tornadoweb.org/en/stable/wsgi.html