以下是Flask文档中的开发/生产示例。无法使用FLASK_ENV
配置烧瓶环境吗?
>>> class DevelopmentConfig(Config):
... FLASK_ENV = "development"
... DEBUG = True
...
>>> class ProductionConfig(Config):
... FLASK_ENV = "production"
... DEBUG = False
...
>>> def create_app(config="ProductionConfig"):
... app = Flask(__name__)
... app.config.from_object(f"{__name__}.{config}")
... return app
...
>>> app = create_app("DevelopmentConfig") # I CREATE AN APP USING DevelopmentConfig
>>> app.run()
* Serving Flask app '__main__' (lazy loading)
* Environment: production # WHY IS ENVIRONMENT SET TO PRODUCTION?
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
尽管可以从settings
设置ENV
和DEBUG
,但它可能无法按预期工作,因此不推荐使用。
为了可靠地设置环境和调试模式,Flask使用环境变量。
供您参考,环境和调试功能
所以我发现,虽然在外部应该使用FLASK_ENV
,但在内部应该只使用ENV
。
>>> class DevelopmentConfig(Config):
... ENV = "development" # USE ENV INSTEAD OF FLASK_ENV
... DEBUG = True
...
>>> class ProductionConfig(Config):
... ENV = "production" # USE ENV INSTEAD OF FLASK_ENV
... DEBUG = False
...
>>> def create_app(config=ProductionConfig):
... app = Flask(__name__)
... app.config.from_object(config)
... return app
...
>>> app = create_app(DevelopmentConfig)
>>> app.run()
* Serving Flask app '__main__' (lazy loading)
* Environment: development # NOW IS SET CORRECLY
* Debug mode: on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)