Как обрабатывать запись многопоточных приложений в базу данных с использованием SQLAlchemy - PullRequest
0 голосов
/ 23 апреля 2020

Как обработать следующий случай, чтобы не перезаписывать свои данные другим. Здесь, когда выполняются оба потока, приращение было зарегистрировано только один раз. Это перезаписано другим. Сон добавлен с целью симуляции ситуаций.

def thread_one(name):
    logging.info("Thread %s: starting", name)
    user = User.query.filter_by(user_id=1).first()
    logging.info(f"T1 {user.counter}")
    user.counter += 1
    logging.info(f"T1 After Inc {user.counter}")
    db_session.commit()
    time.sleep(5)
    logging.info("Thread %s: finishing", name)


def thread_two(name):
    logging.info("Thread %s: starting", name)
    user = User.query.filter_by(user_id=1).first()
    logging.info(f"T2 {user.counter}")
    time.sleep(5)
    user.counter += 1
    logging.info(f"T2 After Inc {user.counter}")
    db_session.commit()
    logging.info("Thread %s: finishing", name)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...