烧瓶型号:
>>> flask.__version__
'0.12.2'
我不想更新某个URL的过期时间。
目前,我使用以下方法设置会话过期时间:
session.permanent = true
app.permanent_session_lifetime = timedelta(minutes=int(10))
我有一个状态页,它使用ajax方法每分钟自动刷新一次,只获取数据。
在这种情况下,我不想重置会话过期时间。
有办法吗?
编辑:
我的代码:
from datetime import timedelta
from flask import Flask
from flask import session
APP = Flask(__name__, static_url_path='', static_folder='templates')
def create_user_session(user_accountid, auth_token):
session['token'] = auth_token
session['user_accountid'] = user_accountid
def update_session():
session.permanent = True
APP.permanent_session_lifetime = timedelta(minutes=10)
session.modified = True
@APP.route('/batch_status', methods=['GET'])
def view_status():
create_user_session(1, "****")
update_session()
return "Session Change"
@APP.route('/batch_status_json', methods=['GET'])
def retrieve_status():
return "Session No Change"
if __name__ == '__main__':
APP.secret_key = "My Precious Key"
APP.run(host='0.0.0.0', debug=True, port=8000)
我不想更改
batch_status_json
调用中的会话过期时间,但在调用时会自动更改。编辑2:
监控器
from datetime import timedelta
from flask import Flask
from flask import session
from status import RETRIEVE_STATUS
APP = Flask(__name__, static_url_path='', static_folder='templates')
APP.register_blueprint(RETRIEVE_STATUS)
def create_user_session(user_accountid, auth_token):
session['token'] = auth_token
session['user_accountid'] = user_accountid
def update_session():
session.permanent = True
APP.permanent_session_lifetime = timedelta(minutes=10)
session.modified = True
@APP.route('/batch_status', methods=['GET'])
def view_status():
create_user_session(1, "****")
update_session()
return "Session Change"
if __name__ == '__main__':
APP.secret_key = "My Precious Key"
APP.run(host='0.0.0.0', debug=True, port=8000)
状态.py:
from flask import Blueprint
RETRIEVE_STATUS = Blueprint('retrieve_status', __name__)
@RETRIEVE_STATUS.route('/batch_status_json', methods=['GET'])
def retrieve_status():
return "Session No Change"
最佳答案
如果会话被标记为已修改或设置了SESSION_REFRESH_EACH_REQUEST
选项,则设置cookies。默认情况下,该选项为true。
在烧瓶配置中尝试设置
SESSION_REFRESH_EACH_REQUEST = False
从文档中:
会话刷新每个请求
控制cookie是否与一起发送
session.permanent为true时的每个响应。发送cookie
每次(默认)都可以更可靠地阻止会话
即将过期,但使用更多带宽。非常任会议不是
影响。
默认值:true