如何在Flask中的会话结束时运行函数?

2024-06-28 19:20:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我想成为一个能够在用户会话结束后运行函数的人(他们要么关闭浏览器,要么超时)。你知道吗

我该怎么做呢?你知道吗

#create timeout
@app.before_request
def make_session_permanent():
    session.permanent = True
    app.permanent_session_lifetime = timedelta(minutes=5)

#run function once session ends
#@app.session_ends
def session_ended()
    #run code

Tags: 函数run用户trueappmakerequestsession
3条回答

由于HTTP会话的工作方式,根本没有可靠的方法来做到这一点。你知道吗

多想想你想解决什么问题,找到另一种方法,而不是在会话过期时运行函数。你知道吗

@app.before_request中,使用g之类的方法检查会话是否处于全局活动状态。在那之后,你需要采取行动。你知道吗

from flask import g

@app.before_request
def before_request():
    g.user = None
    if 'user' in session:
        g.user = session['user']
    else:
        session_ended()

我猜烧瓶是基于cookie的,你没有回调选项。但如果有帮助的话,下面是一些提示。

Call a function when Flask session expires

Catch session expiration in Flask

https://www.google.com/amp/s/pythonawesome.com/flask-user-session-management/amp/

编辑

一种可能是运行一些计时器或调度程序,检查会话并使其无效,可能是某种黑客行为,而不是一个干净的解决方案。你知道吗

相关问题 更多 >