我该在哪里托管使用Tornado Web服务器开发的应用?
有没有什么托管服务可以用来托管用Tornado开发的简单应用程序?就像我们在Google App Engine上托管一样。可以在Google App Engine上托管吗?这个应用程序只是一些学生数据(添加、删除、搜索等)。我是用Python开发的。
提前谢谢你!
3 个回答
1
在Heroku上,Cedar这个平台还不支持WebSockets协议。
1
在App Engine上托管Tornado应用是完全可以的,但有几个注意事项需要记住:
App Engine通过WSGI来部署所有内容,这意味着你不能利用Tornado的异步特性,因为WSGI本身是设计成异步的。如果你能接受这一点,你需要用
WSGIAdapter
来包装你的应用:app = tornado.web.Application(url_list, **server_settings) if __name__ == '__main__': # start the server if run directly import tornado.httpserver http_server = tornado.httpserver.HTTPServer(app) http_server.listen(8080, address='localhost') tornado.ioloop.IOLoop.instance().start() else: # wrap as WSGI import tornado.wsgi app = tornado.wsgi.WSGIAdapter(app)
App Engine要求所有应用特定的库都必须包含在你的源代码中,所以你不能使用
virtualenvs
或通过pip
安装库,所有的模块必须是纯Python的。最好的做法是创建一个特殊的目录,这个目录不被你的源代码管理工具跟踪,并在里面用pip install -U -t lib/ -r requirements.txt
来本地安装所有库(假设这个目录叫lib
)。当然,你需要在应用的配置中添加一些代码,让你的代码知道这个目录:sys.path.insert(0, os.path.join(os.path.abspath('.'), 'lib'))