私は特定のビューが呼び出されたときに、CSVファイルへのデータの行を書きます私のDjangoアプリケーションにいくつかの機能を追加することを計画しています:CeleryはDjangoの非同期ファイル書き込み機能に必要ですか?
session_dict = collectUserDataFromRequest(request) #....collect parameters from request
if os.path.isfile(filename):
with open(filename, 'a') as csv_file:
a = csv.DictWriter(csv_file,session_dict.keys())
a.writerow(session_dict)
csv_file.close()
else:
with open(filename, 'w') as csv_file:
w = csv.DictWriter(csv_file,session_dict.keys())
w.writeheader()
w.writerow(session_dict)
csv_file.close()
# then proceed to render the html
私が直面しています問題は、とき潜在的な競合条件を扱っています複数のユーザーが同時に私のアプリケーションにアクセスしています。データは任意の順序でcsvファイルに追加できますが、csvファイルでロックが解除されるのを待っている間に、ビューをロードするのに時間がかかることを望んでいません。したがって、私は文字列データの非同期のキューは、良い回避策のようにバックグラウンドで実行できるファイルに書き込まれると思う。
私はCeleryが私のDjangoアプリケーションに非同期プロセスを追加するための良いフレームワークだと言われています。しかし、いくつかのチュートリアルを見て、私はRedisのような追加のフレームワークが通常必要であることを見ています。私は、これが私が達成しようとしているものには過剰なものかもしれないと心配しています。 hereなどの標準的なマルチプロセッシング手法を使用することで逃げるか、Django実稼働環境でマルチスレッドを使用することには他の欠点がありますか?