Я занимаюсь разработкой игры, в которой пользователи могут видеть список всех игр, в которые играют в данный момент, всеми пользователями.
Под "играми, в которые играют в данный момент" я имею в виду игры, для которых пользовательские сессии еще не истекли.
Итак, я придумал:
- Словарь (
all_games
) для связи игр с пользовательскими сессиями, - Представление опроса (
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)
Есть ли другой способ добиться этого?