heroku - 在 Heroku 上使用 Redis 的服务器端 Flask session

标签 heroku flask redis

我正在 Heroku 上部署一个 Flask 应用程序,出于各种原因需要实现服务器端 session ,但我不知道如何正确设置它。 Heroku 的 docs关于如何连接非常简单:

import os
import redis

r = redis.from_url(os.environ.get("REDIS_URL"))

我正在尝试使用 Flask-Session extension 运行它.根据他们的快速入门示例:

from flask import Flask, session
from flask.ext.session import Session

app = Flask(__name__)
# Check Configuration section for more details
SESSION_TYPE = 'redis'
app.config.from_object(__name__)
Session(app)

@app.route('/set/')
def set():
    session['key'] = 'value'
    return 'ok'

我对两者的连接方式感到困惑,因为在后一个示例中甚至没有导入 redis 模块。在 Flask-session 页面上进一步阅读,有一个表格“扩展也理解的配置键列表:”,其中一个是“SESSION_REDIS”,描述为“A redis.Redis例如,默认连接到 127.0.0.1:6379”。我猜这是 Heroku 文档中的实例 (r),但是短语“扩展程序理解的键”让我不知道如何实际处理它。

最佳答案

是的,Flask-session 的文档非常糟糕。 扩展程序理解的 key 意味着您可以指定列出的配置选项,将它们传递给您的 Flask 应用程序,Flask session 将确认并使用这些选项。之所以称为键,是因为 Flask 应用程序接受键值字典形式的配置。

在 Flask-session 中,他们使用非常不寻常的方法来配置它:他们要求您传递已配置的 redis 客户端对象,而不是将主机、端口等选项作为字符串传递:

from flask import Flask, session
from flask_session import Session
from redis import Redis

app = Flask(__name__)
SESSION_TYPE = 'redis'
SESSION_REDIS = Redis(host="your_host", port=1234)
app.config.from_object(__name__)
Session(app)

关于heroku - 在 Heroku 上使用 Redis 的服务器端 Flask session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53095702/

相关文章:

java - vertx-redis-客户端 3.7.0 : Is it cheap to create redis client on every http request

redis - 如何使用 redisTemplate 获取和设置数据到特定的 redis 数据库索引?

node.js - Heroku 服务器上 NodeJS 应用程序中 MissingSchemaError

python - Flask-Babel 更新现有的 messages.pot 文件

python - Docker flask 应用程序不工作 - 端口问题

Flask 同时上传图片和文字

mysql - Node.js Promise 概念在 if else 条件下的 then block

symfony - 盆景Elasticsearch Heroku未知错误52

heroku - (又一个)耙 Assets :precompile is slow while deploying to Heroku

python - 使用 Django、Heroku 和 Name.com 的错误请求 (400)