【问题标题】:Warning message while running Flask运行 Flask 时出现警告消息
【发布时间】:2018-10-21 10:10:48
【问题描述】:

当我从命令行运行 Flask 代码时,出现警告:

Serving Flask app "hello_flask" (lazy loading)
* Environment: production
  WARNING: Do not use the development server in a production environment.
  Use a production WSGI server instead.

这是什么意思?

【问题讨论】:

标签: python flask


【解决方案1】:

你可以像这样开始你的主脚本:

import os

if __name__ == '__main__': 
    os.environ.setdefault('FLASK_ENV', 'development')

【讨论】:

    【解决方案2】:

    如果您遇到NoAppException 并且看到延迟加载,则以下似乎可以解决问题:

    cd <project directory>
    export FLASK_APP=.
    export FLASK_ENV=development
    export FLASK_DEBUG=1
    

    【讨论】:

    • 只有当服务器不能从外部访问时才可以。不要在生产中这样做!
    【解决方案3】:

    Flask 1.x 开始,默认环境设置为生产环境。

    要使用开发环境,请创建一个名为.flaskenv 的文件并将其保存在项目目录的顶级(根) 中。在.flaskenv 文件中设置FLASK_ENV=development。您也可以保存FLASK_APP=myapp.py

    例子:

    myproject/.flaskenv:

    FLASK_APP=myapp.py
    FLASK_ENV=development
    

    然后你只需在命令行上执行:

    flask run
    

    这应该会处理警告。

    【讨论】:

      【解决方案4】:

      首先,尝试以下操作:

      set FLASK_ENV=development 
      

      然后运行您的应用程序。

      【讨论】:

        【解决方案5】:

        我正在输入flask run,然后看到这条消息,然后我用这些解决了这个问题:

        1- 在您的 myproject/.flaskenv 中添加此文本:
        FLASK_APP=myapp.py
        FLASK_ENV=开发
        你也应该输入“pip3 install python-dotenv”来使用这个文件 .flaskenv

        2-在您的项目文件夹中,在终端中输入您使用的烧瓶命令:
        flask-3 运行

        【讨论】:

          【解决方案6】:

          试试 gevent:

          from flask import Flask
          from gevent.pywsgi import WSGIServer
          
          app = Flask(__name__)
          
          @app.route('/api', methods=['GET'])
          def index():
              return "Hello, World!"
          
          if __name__ == '__main__':
              # Debug/Development
              # app.run(debug=True, host="0.0.0.0", port="5000")
              # Production
              http_server = WSGIServer(('', 5000), app)
              http_server.serve_forever()
          

          注意:使用pip install gevent安装gevent

          【讨论】:

          • 使用gevent 的主要好处是什么?
          • @alper 与什么比较?
          • @lashgar 使用开发模式app.run(debug=True, host="0.0.0.0", port="5000")
          • @alper 表示正在开发且不安全。 gevent 是在生产环境中运行应用程序的一种选择。
          【解决方案7】:

          删除“不要在生产环境中使用开发服务器”。警告,运行:

          导出 FLASK_ENV=development

          flask run之前。

          【讨论】:

            【解决方案8】:

            the Flask documentation中所述:

            虽然轻量级且易于使用,但 Flask 的内置服务器不适合生产,因为它不能很好地扩展,并且默认情况下一次只处理一个请求。

            鉴于 Web 应用程序需要处理来自多个用户的多个并发请求,Flask 警告您开发服务器不会这样做(默认情况下)。它建议使用Web Server Gateway Interface (WSGI) server (numerous possibilities are listed in the deployment docs with further instructions for each) 作为您的网络/应用程序服务器,并在处理请求时调用 Flask。

            【讨论】:

            • 感谢您的回答,但我仍然不明白该怎么做。能否请您指导我有关 Web 服务器网关接口 (WSGI) 的信息
            • 如果您不知道如何设置 WSGI 或在哪里寻找说明,您可能不需要它。只要您不尝试在生产环境(= 公开网站)中运行 Flask 代码,您就可以使用 Flask 的内置网络服务器。如果您有多个客户端访问您的服务,请确保将threaded=True 设置为here 所示。
            • @HarshitSatya 我链接到的文档将指导您完成一大堆各种 WSGI 选项。对于开发,它不是必需的。超出此范围的解释将超出此问题的范围,并且可能过于宽泛(“如何部署我的 Flask 应用程序?”),因为整个教程都专门针对此在线。就个人而言,我使用 pythonanywhere 是因为它使部署变得非常简单。
            • 谢谢@IonicSolutions 和@Arthur Dent
            • 这应该被接受为答案。 Arthur Dent 都解释了这个问题,并链接了文档以了解如何解决它。谢谢,亚瑟。
            【解决方案9】:

            在配置或配置中,您可以添加以下代码: ENV = ""

            就像你尝试像这样将调试集添加为 true DEBUG = True

            更多详情,您可以查看http://flask.pocoo.org/docs/1.0/config/#ENV

            【讨论】:

            • 感谢您的回答,但当时我已经尝试过了。并且 DEBUG = True 有助于我们每次运行代码时都不必重新启动烧瓶会话
            【解决方案10】:

            我使用flask已经有一段时间了,今天突然出现了这个警告。我找到了这个。

            here 所述,从flask 1.0 版开始,flask 应用程序运行的环境默认设置为生产环境。如果您在较旧的烧瓶版本中运行您的应用,您将不会看到此警告。

            1.0 版中的新功能。

            更新日志

            Flask 应用程序运行的环境由 FLASK_ENV 环境变量设置。如果未设置,则默认为生产。另一个公认的环境是发展。 Flask 和扩展可以选择启用基于环境的行为。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2014-06-22
              • 1970-01-01
              • 2022-10-14
              • 1970-01-01
              • 1970-01-01
              • 2015-08-07
              • 1970-01-01
              • 2018-01-01
              相关资源
              最近更新 更多