代码之家  ›  专栏  ›  技术社区  ›  Joe

为什么这个请求会冻结我的web服务器?(werkzeug.ERROR:代码400,错误的请求语法)[重复]

  •  0
  • Joe  · 技术社区  · 6 年前

    使用uWSGI和Nginx设置Flask是相当困难的,即使使用构建脚本也需要相当长的时间,并且必须记录到指令中以便稍后复制。

    即使不使用Nginx,只在端口上运行裸瓶应用程序有意义吗?

    0 回复  |  直到 7 年前
        1
  •  29
  •   davidism    5 年前

    当您“运行Flask”时,实际上是在运行Werkzeug的开发WSGI服务器,并将Flask应用程序作为WSGI可调用程序传递。

    将Werkzeug dev服务器替换为生产就绪的WSGI服务器,如Gunicorn或uWSGI,无论应用程序在何处可用。


    答案与“我应该使用web服务器”类似。WSGI服务器碰巧有HTTP服务器,但它们不如专用的生产HTTP服务器(Nginx、Apache等)。


    documents 如何以各种方式部署。许多托管提供商也有关于部署Python或Flask的文档。

        2
  •  13
  •   Stephen J.    8 年前

    可能您已经设置了一个Flask应用程序对象和路由,但是如果您创建这样的应用程序:

    import flask
    
    app = flask.Flask(__name__)
    

    然后设置你的 @app.route() s、 然后,当您要启动应用程序时:

    import gevent
    
    app_server = gevent.wsgi.WSGIServer((host, port), app)
    app_server.serve_forever()
    

    我有一个案例,我希望flask的实用程序构建一个web应用程序(REST API服务),但发现无法与其他非flask、非web服务元素组合flask是一个问题。我终于发现 gevent.wsgi.WSGIServer 这正是我所需要的。打电话给 app_server.serve_forever() ,你可以打电话 app_server.stop()

    在我的部署中,我的应用程序正在本地主机上监听:使用flask和gevent,然后我在另一个端口上有nginx反向代理HTTPS请求,并将它们转发到本地主机上的flask服务。