我该在哪里托管使用Tornado Web服务器开发的应用?

2 投票
3 回答
2023 浏览
提问于 2025-04-17 13:53

有没有什么托管服务可以用来托管用Tornado开发的简单应用程序?就像我们在Google App Engine上托管一样。可以在Google App Engine上托管吗?这个应用程序只是一些学生数据(添加、删除、搜索等)。我是用Python开发的。

提前谢谢你!

3 个回答

1

在Heroku上,Cedar这个平台还不支持WebSockets协议。

1

Heroku 是一个不错的选择,可以用来发布你用 Tornado 开发的应用。

这个链接可能会对你 有帮助

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

撰写回答