1

私はDjangoアプリを開発しています。これは、100人のユーザーがコメントを投稿するために使用します。コメントごとにModel.save()、データベースをコミットし、スケーラブルではないことはできません。セロリを使って定期的にデータベースをコミットしたい。これを行う方法はありますか?

djangoでトランザクション管理を確認しましたが、ポインターが見つかりませんでした。私を助けてください。

多くのモデルを保存した後で手動でコミットしたいのですが、これは少数のモデルにのみ制限する必要があります。ユーザー作成のために、すぐに保存してコミットしたいと思います。定期的にコミットしたい投稿のみ。

4

1 に答える 1

4

あなたの要求はナンセンスです。まず、保存とコミットは 2 つの異なるものです。モデル インスタンスはデータベースに個別に保存できますが、コミットはトランザクションを処理し、1 つまたは複数の db 行を含めることができます。呼び出しsave()自体はコミットを行いません。デフォルトでは、トランザクションは要求/応答サイクルに基づいており、トランザクションは要求の開始時に開かれ、応答の最後にコミットされます。

第二に、別のプロセスがコミットを処理することは完全に不可能です。トランザクション管理の要点は、トランザクションの内部にあるものは、トランザクション自体を処理する接続からのみ見えるということです。そのトランザクションの外では、データベースがまったく変更されていないかのようです。

スケーラビリティについては、dgel のコメントを参照してください。特に「数百」のユーザーしか扱っていない場合は、コミットを別のプロセスに外部委託する必要はありません。これは、データベースがまったく労力をかけずに管理できるわずかな量です。

于 2012-08-19T12:03:28.470 に答える