在Heroku上使用Redis的服务器端Flask会话

时间:2018-11-01 05:36:04

标签: heroku flask redis

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

Ingredients {ArrayOf<string>} | Cuisine {string}
[Tomato, Spaghetti, Beef, Basil, Oregano] | Italian
[Coriander Seeds, Cumin, Paprika, Chicken, Garlic, Ginger] | Indian
[Beef, Onion] | French

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

import os
import redis

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

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

1 个答案:

答案 0 :(得分:1)

是的,Flask会话记录得很糟糕。 扩展名可以理解的键意味着您可以指定列出的配置选项,将其传递到flask应用程序,Flask会话将确认并使用这些选项。之所以称为键,是因为flask应用程序接受键值字典形式的配置。

在Flask会话中,他们使用非常不寻常的方法对其进行配置:与其将诸如主机,端口等选项作为字符串传递,他们还要求您传递已配置的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)