Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我在这里托管使用tornado webserver开发的应用程序_Python_Google App Engine_Webserver_Hosting_Tornado - Fatal编程技术网

Python 我在这里托管使用tornado webserver开发的应用程序

Python 我在这里托管使用tornado webserver开发的应用程序,python,google-app-engine,webserver,hosting,tornado,Python,Google App Engine,Webserver,Hosting,Tornado,是否有任何托管服务可以托管使用tornado开发的简单应用程序(就像我们在Google应用程序引擎中托管一样)。是否可以在Google App Engine上托管?这些应用程序就像一些学生数据(添加、删除、搜索等)。我是用python开发的 提前感谢是部署龙卷风驱动应用程序的好选择 这可能是heroku的WebSockets协议在Cedar堆栈上还不受支持。完全可以在App Engine上托管Tornado应用程序;但是,您需要记住以下几点注意事项: AppEngine正在通过WSGI部署所有

是否有任何托管服务可以托管使用tornado开发的简单应用程序(就像我们在Google应用程序引擎中托管一样)。是否可以在Google App Engine上托管?这些应用程序就像一些学生数据(添加、删除、搜索等)。我是用python开发的

提前感谢

是部署龙卷风驱动应用程序的好选择


这可能是heroku的WebSockets协议在Cedar堆栈上还不受支持。

完全可以在App Engine上托管Tornado应用程序;但是,您需要记住以下几点注意事项:

  • AppEngine正在通过WSGI部署所有内容,这意味着如果WSGI在设计上是异步的,就不能利用Tornado的异步特性。如果你能接受,你需要用
    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)
    
  • appengine要求所有特定于应用程序的库都在源代码中提供,因此您不能使用
    virtualenvs
    ,也不能通过
    pip
    安装库,并且所有模块必须是纯Python。最好的方法是使用一个特殊的目录,不受源代码管理的跟踪,并使用
    pip install-U-t lib/-r requirements.txt在本地安装所有内容(假设该目录名为
    lib
    。当然,您需要通过在应用程序配置中的某个位置添加以下内容来让代码知道该目录:

    sys.path.insert(0, os.path.join(os.path.abspath('.'), 'lib'))