сеанс фляги: как закрыть ресурсы в сеансе - PullRequest
0 голосов
/ 15 ноября 2018

В каждом запросе к моему API фляги я создаю новый дескриптор ресурса. Это потенциально огромная потеря производительности, так как эти ручки довольно умны и могут кешировать множество взаимодействий. Я хотел бы переместить ручку к моей сессии фляги . Но если ручки больше не используются, их нужно закрыть. Это возможно с сеансом?

Я хочу переместить этот код

# inside a flask route
with Resource_handle() as resource_handle:
    # use it

к этому коду

# inside a flask route
if "resource_handle" in session:
    resource_handle = session["resource_handle"]
else:
    resource_handle = Resource_handle()
    session["resource_handle"] = resource_handle

# where do I put resource_handle.close()

Насколько я вижу, API не охватывает этот случай. Поэтому я подумал, что просто расширю существующие сеансы и реализую свой собственный сеанс обработки ресурсов. Но это сложно, обратного вызова end_session нет. Только open_session и save_session. Источник здесь: https://github.com/fengsp/flask-session/blob/master/flask_session/sessions.py

Не относится к флеш-сессиям, но, чтобы уточнить вопрос: я не могу просто сделать дескриптор глобальным и сделать так, чтобы все запросы разделяли его. Это вопрос дизайна, мне нужны отдельные ручки, чтобы не влиять друг на друга. (Кроме того, есть вопрос безопасности потоков. Уверен, эти ручки НЕ являются потокобезопасными.)

...