Как сохранить ссылку на уже истекший сеанс после того, как он ушел? - PullRequest
0 голосов
/ 06 февраля 2020

Я занимаюсь разработкой игры, в которой пользователи могут видеть список всех игр, в которые играют в данный момент, всеми пользователями.

Под "играми, в которые играют в данный момент" я имею в виду игры, для которых пользовательские сессии еще не истекли.

Итак, я придумал:

  1. Словарь (all_games) для связи игр с пользовательскими сессиями,
  2. Представление опроса (get_current_games) это должно проверить, истек ли сеанс, и - если это так - удалить его игры из вышеупомянутого словаря.

Моя проблема заключается в представлении опроса get_current_games: если сеанс уже истек, его идентификатор также пропал, и я не могу сравнить его с ключами all_games dict:

import uuid

from flask import (
    Flask, 
    render_template, 
    jsonify,
    session,
)

from minesweeper import Game

app = Flask(__name__)
app.secret_key = 'secret'
app.permanent_session_lifetime = 10

all_games = {}

@app.route('/')
def index(): 
    session['id'] = str(uuid.uuid4())
    all_games[session['id']] = []
    return render_template('index.html')

@app.route('/start_new_game')
def start_new_game():
    game = Game()   
    all_games[session['id']].append(game)
    return jsonify({})

@app.route('/get_current_games')
def get_current_games():
    # if session has expired
    if not session.get('id'):
        del all_games[session['id']] # this will obviously not work because the session ID is already gone

    return jsonify(all_games)

Есть ли другой способ добиться этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...