djangoマルチスレッドmysql汚れた行

575 ワード

同じプロジェクトの次の2つのスレッドでModelを操作すると、得られるデータが異なります.シーン:ユーザーが支払いをした後に支払いの状態をデータベースに保存して、単号をwebsocketを通じてクライアントに送って、クライアントは注文を確認した後にwebsocketを通じて単号と状態を返して、この時返送の単号を処理する時、単号を投げ出して存在しません.理由:自分でECSで構築したデータベースサービスは、デフォルトの独立性レベルがREPEATABLE-READであり、READ COMMITTEDに変更すればよい.また、mysqlプロファイルを変更せずにdjangoのsettingsでこのオプションを設定することもできる.
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        ...
        'OPTIONS':{'init_command': 'SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED'}
    }
}