8

1 つのアプリケーションで複数のデータベースを使用する Django ドキュメントの例を参照すると、

https://docs.djangoproject.com/en/dev/topics/db/multi-db/#an-example

" また、トランザクションとデータベース利用戦略との相互作用も考慮していません。"

上記のやり取りをどのように処理しますか。

シナリオは次のとおりです。

データベースとしてpostgresqlを使用しています。レプリカをセットアップしましたが、「認証」テーブルへのすべての読み取りをレプリカに送信したいと考えています。ドキュメントに従って、データベースルーターを作成しました。アプリケーションにログインしようとすると、次のエラーがスローされます。

DatabaseError: cannot execute UPDATE in a read-only transaction.

これは、Django が「last_login」時間を節約しようとしたときに発生します。同じビューで、最初にレプリカからレコードをフェッチし、次に last_login 時刻を更新しようとするためです。1 つのトランザクションで発生するため、同じデータベース、つまりレプリカが使用されます。

どうすればこれを処理できますか?

考え?

4

0 に答える 0