【问题标题】:How to setup redis as cache with flask-session when working with containers?使用容器时如何使用烧瓶会话将redis设置为缓存?
【发布时间】:2019-10-05 06:12:55
【问题描述】:

我正在尝试使用 docker 部署一个 flaskapp,所以我有两个容器,一个用于我的 flaskapp,另一个用于 redis。我已经设置了一个网络并在其中执行。访问我的 flaskapp 时出现以下错误:

ConnectionError:连接到 localhost:6379 时出现错误 99。无法分配请求的地址。

发生这种情况是因为我使用 redis 作为烧瓶会话的缓存,并且我将 redis 托管在一个名为 exampleredis 的容器中。

我的问题是:如何在 Flask 中将 redis 主机设置为 exampleredis?

我有以下配置文件:

class DevConfig(Config):
    REDIS_HOST = 'exampleredis'
    SESSION_TYPE = 'redis'
    JSONIFY_PRETTYPRINT_REGULAR = False
    JSON_SORT_KEYS = False
    BCRYPT_LOG_ROUNDS = 15
    DEBUG = True

【问题讨论】:

    标签: docker flask redis docker-network


    【解决方案1】:

    根据document of flask-session,这应该可以工作:

    import redis
    
    class DevConfig(Config):
        SESSION_REDIS = redis.from_url('redis://exampleredis:6379')
        SESSION_TYPE = 'redis'
        ...
    

    【讨论】:

    • 您好,谢谢您的回答!部分正确,因为如 redis 源代码文档中所述,提供的 url 必须以 redis://(用于普通 TCP 套接字连接)、redis://(用于 SSL 包装的 TCP 套接字连接)或 unix:// 开头(一个 Unix 域套接字连接)。所以就我而言,应该是:redis.from_url('redis://exampleredis:6379')
    猜你喜欢
    • 2019-11-10
    • 1970-01-01
    • 2019-07-14
    • 1970-01-01
    • 2021-10-09
    • 1970-01-01
    • 1970-01-01
    • 2013-04-25
    • 1970-01-01
    相关资源
    最近更新 更多