В одном из моих маршрутов Flask происходят различные вещи, относящиеся к материалам, которые загружает пользователь. В ходе обработки файлы проходят через приложение, которое обновляет несколько разных таблиц в базе данных. В приложении все выглядит на 100% нормально и правильно, но когда я выхожу из Flask, последние три обновления таблицы просто исчезают. Данный маршрут Flask действительно длинный и сложный, но до определенного момента все работает идеально, как и раньше…
Код: Выделить всё
** whole bunch of stuff happens above here **
try:
db.session.commit()
except Exception as e:
db.session.rollback()
db.session.add(new_audit_history_entry)
db.session.add(new_audit_log_entry)
try:
db.session.commit()
except Exception as e:
db.session.rollback()
update_task = TaskQueue.query.get(task_id)
update_task.completed_at = datetime.now()
update_task.status = 'Complete'
try:
db.session.commit()
except Exception as e:
db.session.rollback()
finally:
audit_history = AuditHistory.query.all()
audit_logs = AuditLog.query.all()
tasks = TaskQueue.query.all()
db.session.flush()
db.session.close()
return jsonify({'message': 'Files saved and validated!', 'This many files: ': len(files)})
Единственная подсказка, которую я видел, — когда я запускаю резервное копирование Flask, я получаю следующее:
Код: Выделить всё
Exception in WAL playback: Violates foreign key constraint because key "auditid: 95693563-b229-40d7-9b12-5c4447bdb601" does not exist in the referenced tableЧтобы внести ясность, я не прерываю приложение в середине записи или чего-то еще, я выхожу и перезапускаю его после того, как эти записи завершатся. Как будто я убежден, что могу запустить приложение в течение дня, и ни одна из этих записей не сохранится после выхода. Кроме того, я элегантно обрабатываю прерывание клавиатуры в своем приложении, включая окончательную фиксацию базы данных для наглядности.
Что мне не хватает? Есть ли что-то особенное в утке, что мне нужно сделать?
Подробнее здесь: https://stackoverflow.com/questions/783 ... ting-flask
Мобильная версия