My python version is 2.7.2
python由uwsgi运行 我的nginx配置是
location /{
uwsgi_pass 127.0.0.1:8888;
include uwsgi_params;
}
app.py
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
if __name__ == "__main__":
application = tornado.web.Application([
(r"/", MainHandler),
])
application.listen(9090)
tornado.ioloop.IOLoop.instance().start()
然后我跑了#34;我跑了" uwsgi -s:9090 -w app"
但是它会引发错误
[pid:28719 | app:0 | req:21/21] 118.207.180.64(){38 vars in 716 bytes} [Sun Mar 23 22:44:34 2014] GET / =>在0毫秒内生成0个字节(HTTP / 1.1 500)0个字节中的0个标头(核心0上的0个开关)AttributeError:应用程序实例没有调用方法
如何解决?
答案 0 :(得分:1)
import tornado.web
import tornado.wsgi
import wsgiref.simple_server
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
if __name__ == "__main__":
application = tornado.wsgi.WSGIApplication([
(r"/", MainHandler),
])
server = wsgiref.simple_server.make_server('', 8888, application)
server.serve_forever()
(来自official docs)
答案 1 :(得分:0)
Tornado是一个HTTP服务器,而不是WSGI容器(它可以用作WSGI容器,就像x3al的答案一样,但是你失去了一些最有趣的功能)。使用nginx proxy_pass选项代替uwsgi_pass;可以在http://www.tornadoweb.org/en/stable/overview.html#running-tornado-in-production
找到完整的nginx配置示例答案 2 :(得分:0)
问题是您将龙卷风应用程序作为uwsgi应用程序传递。这是修复,使用龙卷风4.0 +中提供的WSGIAdapter
:
import tornado.ioloop
import tornado.web
import tornado.wsgi
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
t_application = tornado.web.Application([
(r"/", MainHandler),
])
application = tornado.wsgi.WSGIAdapter(app) # For wsgi layer
if __name__ == "__main__":
t_application.listen(9090)
tornado.ioloop.IOLoop.instance().start()
但是通过WSGI适配器使用Tornado,您将失去Tornado提供的一些最有趣的功能。在4.0版之前,WSGIApplication可用。