0

次の問題があります。Djangoフレームワークを使用しています。システム内のパーツの1つ(非django)は、djangoが使用しているのと同じデータベース内のデータベースに書き込みます。オブジェクトが保存されているときにシグナルが欲しいのですが。これはdjangoモデルオブジェクトですが、django経由ではなく、mysqlデータベースに直接保存されます。

djangoによって保存されていないときに、djangoがデータベース内の保存アクションを監視する方法はありますか?

最も簡単な方法は次のとおりです。Apiを作成し、保存アクションをこのAPIで実行します。保存信号は、djangoのデフォルトにすることができます。(しかし、これは外部のいくつかの作業に依存します...したがって、好ましいルートではありません...将来の開発のためにそれは確かです)。

もう1つのオプションは、セロリを実装し、保存されたオブジェクトの1つにフォローアップがないかどうかを頻繁に確認するタスクを作成することです。

しかし、もっと簡単なことがあるかもしれません...私にとっては不明ですか?私はファイルシステム用のdjangoウォッチドッグソリューションを見ました...データベース用ではありません(おそらくdjangoにはこのビルドが組み込まれているためです... djangoを介して適切に実行された場合)

複雑にするために:私はsqliteを使用してローカルでテストおよび開発します....しかし、これをローカルで機能させる必要なしにテストに入れることができる保存信号.... mysqlで機能する限り、私は満足しています。

4

2 に答える 2

0

この解決策を試すことができます:

  1. 1 つの列 ' object_id ' を持つ新しいテーブル ' django_watch ' を作成します (標準に従って 'created_datetime' などの他の列を追加します)。

  2. メインテーブルが「オブジェクト」であるとしましょう。このテーブルに INSERT イベントのmysql トリガーを追加します。

  3. object_idを「django_watch」テーブルに挿入するには、トリガー内に追加の挿入クエリを追加する必要があります。

  4. これで、新しいテーブル ' django_watch ' (Django オブジェクトの更新用) を検査し、必要なアクションを実行する cronjob を作成できます。この cronjob は、1 分間の遅延 (任意) で継続的に実行できます。

于 2013-01-29T15:02:23.510 に答える
0

最後に、サードパーティのモジュールから呼び出せる API を作成しました。この API に C コードを使用して django にログオンし、この API の GET を呼び出すコードを配信しました。(ジャンゴレストフレームワークを使用)。この API はオブジェクト (URL で指定された ID) を保存するだけで、そこからデフォルトの django になります。サードパーティがしなければならなかった唯一のことは、同様に API を呼び出すために私のコードを構築することです....

最善の解決策ではないかもしれませんが、私の問題に実装するのが最善です....

于 2013-03-04T14:33:19.403 に答える