【问题标题】:How to set Flask 'ssl_context' as an environment variable or served via a config file?如何将 Flask 'ssl_context' 设置为环境变量或通过配置文件提供服务?
【发布时间】:2021-07-15 21:32:51
【问题描述】:

希望有人可以帮助我,因为我正在努力寻找任何地方的答案。

我正在构建一个必须在 HTTPS 中运行的 Flask 应用程序。在本地开发中,我只是在运行应用程序时做一个非常快速的 ssl_context='adhoc',如下所示:

if __name__ == "__main__":
app.run(
    ssl_context='adhoc',
)

这非常有效,但是当我现在准备开始通过 Heroku 进行测试时,我想更改它以便在我的配置文件中设置 ssl_context:

import os
from decouple import config


class Config:
    DEBUG = False
    DEVELOPMENT = False
    SECRET_KEY = config('SECRET_KEY')


class ProductionConfig(Config):
    pass


class StagingConfig(Config):
    DEBUG = True


class DevelopmentConfig(Config):
    DEBUG = True
    DEVELOPMENT = True
    # Add cert here

我尝试过使用 FLASK_RUN_CERT = 'adhoc' 但这不起作用,我不知道我还能在这里使用什么。我不介意每次提交时都删除 ssl_context='adhoc' 但如果我能避免它,那将是优先考虑的。

任何建议将不胜感激。

【问题讨论】:

  • 有什么理由必须在烧瓶中设置 ssl_context 吗?当我在通常在部署的最后阶段配置它之前完成此操作时,即启动并运行应用程序,然后创建一个证书以在服务器上启用 https - 在你的情况下为 heroku - 然后强制所有连接到 https。
  • 是的,我更愿意这样做,但我正在构建一个由需要 HTTPS 的 API 提供的应用程序,因此目前别无选择

标签: python flask heroku


【解决方案1】:

所以经过大量挖掘后,我仍然找不到使用环境变量正确设置它的方法。

我只是使用了一个简单的 if 语句 switch:

if __name__ == "__main__":
if config('APP_SETTINGS') == "config.DevelopmentConfig":
    app.run(
        ssl_context='adhoc',
    )
else:
    app.run()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-17
    • 2014-12-17
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多