Я настроил сеанс в моем app.py следующим образом.
#Import framework classes
from flask import Flask, request, session
import json
from datetime import timedelta
from flask_pymongo import PyMongo
from flask_mongo_sessions import MongoDBSessionInterface
#Import custum classes
import sys
sys.path.insert(1, './models')
from StudentModel import*
#App initiate, set app configurations and session configurations
app = Flask(__name__, static_url_path='')
app.config["MONGO_URI"] = "mongodb://localhost:27017/ChatBot"
app.config['SESSION_PERMANENT'] = False
mongo = PyMongo(app)
with app.app_context():
app.session_interface = MongoDBSessionInterface(app, mongo.db, 'sessions')
#Initialize Helper Classes
StudentModelContract = StudentModel(mongo)
@app.route('/getSession')
def getMessage():
return session['key']
@app.route('/setSession')
def setMessage():
return session['key'] = 'value'
Теперь, когда я вызываю метод getSession, я получаю следующую ошибку.
Отслеживание (последний вызов последним): файл "/home/thathsara/Documents/PythonProject/venv/lib/python3.5/site-packages/flask/app.py", строка 2446, в wsgi_app ctx.pu sh () Файл "/home/thathsara/Documents/PythonProject/venv/lib/python3.5/site-packages/flask/ctx.py", строка 390, в push self.session = session_interface.open_session (self. app, self.request) Файл "/home/thathsara/Documents/PythonProject/venv/lib/python3.5/site-packages/flask_mongo_sessions/init.py", строка 57, в сеансе open_session = self.session_class (initial = doc ['d'], sid = sid) Файл "/home/thathsara/Documents/PythonProject/venv/lib/python3.5/site-packages/flask_mongo_sessions/init .py ", строка 18, в init initial = pickle.loads (str (initial)) TypeError: требуется объект, подобный байтам, а не str [2020-05-08 17: 27: 36,960] ОШИБКА в приложении: Завершение запроса завершилось ошибкой при обработке ошибки Traceback (последний вызов последним): File "/home/thathsara/Documents/PythonProject/venv/lib/python3.5/site-packages/flask/app.py", строка 2446, в wsgi_app ctx.pu sh () Файл "/home/thathsara/Documents/PythonProject/venv/lib/python3.5/site-packages/flask/ctx.py", строка 390, в push self.session = session_interface.open_session (self.app, self.request) Файл "/home/thathsara/Documents/PythonProject/venv/lib/python3.5/site-packages/flask_mongo_sessions/init .py ", строка 57, в open_session session = self.session_class (initial = doc ['d'], sid = sid) File" /home/thathsara/Documents/PythonProject/venv/lib/python3.5/site -packages / flask_mongo_sessions / init .py ", строка 18, в init initial = pickle.loads (str (initial)) TypeError: требуется объект, подобный байтам, а не ' str '
Во время обработки указанного выше исключения произошло другое исключение:
Traceback (последний вызов последним): File "/ home / thaths ara / Documents / PythonProject / venv / lib / python3 .5 / site-packages / flask / app.py ", строка 1970, в finalize_request response = self.process_response (response) File" / home / thathsara / Documents / PythonProject /venv/lib/python3.5/site-packages/flask/app.py ", строка 2269, в process_response self.session_interface.save_session (self, ctx.session, response) File" / home / thathsara / Documents / PythonProject / venv / lib / python3 .5 / site-packages / flask_mongo_sessions / init .py ", строка 68, в файле save_session cookie_exp = self.get_expiration_time (app, session) File" / home / thathsara /Documents/PythonProject/venv/lib/python3.5/site-packages/flask/sessions.py ", строка 268, в get_expiration_time, если session.permanent: AttributeError: объект 'NoneType' не имеет атрибута 'постоянный'
В первый раз без сеанса приложение работает правильно, и как только я установлю сеанс, он будет создан в БД, а идентификатор сеанса будет отправлен в браузер без каких-либо проблем (повар ie ). Но после этого я получаю ошибку выше, даже если вызываю другой маршрут (даже /). Может кто-нибудь объяснить, в чем проблема с моим кодом?