私はこのシナリオを持っています:Pythonマルチスレッド
Zope/Ploneといくつかの鉱山のpython APIで作成されたWebページ。 Webページがあり、それを "a"と呼びます。これは、Pythonメソッドがデータベース(Postgres)を呼び出し、情報を返します。ページ "a"でデータベースデータを "オフライン"に変更することができます(変更はデータベースに即座に書き込まれるのではなく、「保存」を押してPython APIメソッドを呼び出す2番目の瞬間です)。だから、このシナリオを想像してみましょう。「サム」と呼ばれるユーザーがページを読み込んでデータを修正し始めます。一方、「サラ」と呼ばれるユーザは、「保存」をクリックしてページ「a」によってデータベースを修正する。現在、Samは実際のデータベースデータを持っていません。彼は「保存」を押して、Saraのデータ変更を上書きします。
リアルタイムで私のページにアラートが表示されます。
AJAX呼び出しをブロックすることはできません。ページのレンダリングを続けてください。 AJAXはPythonメソッドを呼び出し、無限ループ( "X"条件)を行うスレッドを作成します。データベースにデータを書き込む際には、「X条件」を変更してスレッドを停止し、AJAXに戻る関数を呼び出します。
また、データベースを変更したいすべてのユーザーに自由にアクセスできるので、データベースをロックできません。
私の問題は、どのように私はPythonスレッドを識別できますか?私は、スレッドから継承するクラスのすべてのメソッドがパラメータとして "self"を求めていることを見てきました。さらに、 "a"ページにアクセスする際にスレッドを呼び出さなければなりません。これはコードのどこかにあります(例えば、 "スレッドモジュール")が、他のモジュールに挿入されています。だから、私のアイデアをどうすれば実現できますか?
そして、誰かが代わりのアイデアを持っている場合、あなたは議論している問題のいずれかの問題もなく私に言う:)
あなたの答えは良いですが、特定のアイタントで、 "a"ページを開いたときに別のユーザーがデータベースを更新したことに気づきたいと思います。次に、プロペラの方法でフィールドを変更します( "a"ページで) – DonCallisto
私の答えが更新されましたが、あなたのコメントを得たときに最後のいくつかの段落を入力していました。 – marr75