Sometimes my Flask application hangs on the following line:
with shelve.open('user_db') as db: (this happens by chance) I can’t give all the application code (very large), but in general it looks like this:
@app.route('/', methods=['POST']) def mpage(): Обработка запроса Запуск следующего метода (set_timer) в потоке Возвращение кода 200 def set_timer(): Запускается таймер, запускается отдельный процесс (см следующий метод) и проверяется время выполнения этого процесса def seps(): Тут почти в самом начале лежит проблемная строка The application hangs exactly on this line, I found it through debugging messages. Can anyone tell me what the problem is?
UPD: replaced shelve with sqlite3. I open it to a global variable like this:
conn = sqlite3.connect('user_db.db', check_same_thread=False) Hangs here:
db = conn.cursor() user_mode = db.execute('SELECT id, mode FROM users WHERE id={}'.format(user_id)).fetchall() I can not understand what the problem is now
upd2: Fully switched to flask_sqlalchemy. The error did not disappear. Code: Base Model:
from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///./user.db' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app) class User(db.Model): id = db.Column(db.Integer, primary_key=True) mode = db.Column(db.Integer, primary_key=False) How to use:
report += 'Открытие БД\n' t_user = User.query.get(user_id) if not t_user: user = User(id=user_id, mode=0) db.session.add(user) db.session.commit() t_user = User.query.get(user_id) user_mode = t_user.mode And somewhere in these lines hangs. I do not know what to do