【发布时间】:2013-01-11 11:30:02
【问题描述】:
是否有任何托管服务可以托管使用 tornado 开发的简单应用程序。(就像我们在 Google App Engine 中托管一样)。是否可以在 Google App Engine 上托管?。应用程序就像一些学生数据(添加、删除、搜索等)。我使用 python 开发。
提前致谢
【问题讨论】:
标签: python google-app-engine webserver hosting tornado
是否有任何托管服务可以托管使用 tornado 开发的简单应用程序。(就像我们在 Google App Engine 中托管一样)。是否可以在 Google App Engine 上托管?。应用程序就像一些学生数据(添加、删除、搜索等)。我使用 python 开发。
提前致谢
【问题讨论】:
标签: python google-app-engine webserver hosting tornado
绝对可以在 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'))
【讨论】:
在 Heroku,Cedar 堆栈尚不支持 WebSockets 协议。
【讨论】: