2011-07-07 88 views
0

私はリモートソースからのデータを処理するいくつかのビュー関数を持っています。多くの場合、この処理には1秒以上かかることがあります。これらのビュー機能への同時アクセスは潜在的に私のデータをスクランブルするでしょうか?Djangoはスレッドセーフであると見なしますか?

さらに、私は自分のデータベースを占有するバックグラウンドスレッドを継続的に稼働させます。このバックグラウンドスレッドは、ビュー機能が呼び出すのと同じライブラリ関数のいくつかを呼び出します。これは潜在的なスレッドセーフの問題ですか?

「はい」の場合、ベストプラクティスは何ですか?私はちょうどPythonのロック機構を使用すると仮定していますが、より良いアプローチがありますか?

ありがとうございます!長時間実行プロセスの場合

-Travis

+0

あなたはどのウェブサーバーを使用していますか? Djangoアプリケーションを実行するためにどのプロセス/スレッドモデルを使用していますか? –

答えて

0

Celeryを使用しています。

長い視野では、モデルインスタンスを作成して、それを設定するセルリータスクを開始できます。ビューにはこのインスタンスのステータスが表示され、結果が表示されるまでセルフ・リフレッシュhtmlが表示されます。

0

明らかにスレッドの問題を引き起こすことはありません。スレッドの安全性は、単一のリクエストの処理を並列化したい場合、スレッドセーフであるため、複数のスレッドを1つのリクエストに対して確実に行う必要があります。

それぞれのリクエストはデータにアクセスしており、自分のコピーを取得します。

0

リモートソースからデータを読み書きしています。私はクライアントではなく、これらのリモートソースでトランザクションを使用してアクセスを同期しようとします!

関連する問題