Сеансы Flask на стороне сервера с использованием Redis на Heroku - PullRequest
0 голосов
/ 01 ноября 2018

Я развертываю приложение Flask на Heroku, и по различным причинам мне необходимо реализовать сеансы на стороне сервера, и я не могу понять, как правильно его настроить. Документы от Heroku о том, как подключиться, довольно минималистичны:

import os
import redis

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

Я пытаюсь запустить это с расширением Flask-Session . Согласно их быстрому примеру:

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_REDIS», с описанием «Экземпляр redis.Redis. по умолчанию подключиться к 127.0.0.1:6379 ". Я предполагаю, что это экземпляр (r) из документов Heroku, но фраза «ключи, понятные расширению» не дает мне понятия о том, что на самом деле делать с ним.

1 Ответ

0 голосов
/ 01 ноября 2018

Да, 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...