2014-03-24 40 views
1
My python version is 2.7.2 

蟒蛇被uwsgi乳寧 我的nginx的配置是如何解決Tornado官方規範「Hello,world」示例應用程序的錯誤?

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() 

然後我跑「我跑 「uwsgi -s:9090 -w應用」

但它拋出一個錯誤

[pid:28719 | app:0 | req:21/21] 118 .2017.180.64(){38 vars in 716 bytes} [Sun Mar 23 22:44:34 2014] GET/=>在0 msecs中生成0字節(HTTP/1.1 500)0字節中的0個頭0)AttributeError:應用程序實例沒有致電方法

如何解決?

+0

你可以鏈接或粘貼你的uwsgi配置文件(/etc/uwsgi/your-app.ini)嗎? – x3al

回答

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

+0

不,它仍然是錯誤,並顯示「內部服務器錯誤」error.log是「---沒有找到python應用程序,檢查你的啓動日誌錯誤---」 – tiyee

+0

在另一方面,我沒有xxx .ini如my_app.ini文件 – tiyee

+0

要使用uwsgi使用Tornado,請將'application ='行移出if __name__ == __main __「'塊(但不要處理'server'的行 - 將它們移除或離開他們在'__main__'塊中)。但是,在這種模式下使用Tornado會禁用它的許多最有趣的功能,因此您可能需要更改nginx配置而不是Tornado代碼(我在這個問題的答案中解釋了這些代碼) –

0

問題是,你正在傳遞一個龍捲風應用程序作爲uwsgi應用程序。這裏是修復,使用WSGIAdapter在龍捲風4.0+版本:

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適配器使用龍捲風,你失去了一些的是龍捲風提供了最有趣的功能。在版本4.0之前,WSGIApplication可用。