セロリーを学ぶには、Celery Best Practicesと読んでください。セロリーでのデータベース使用については、非常に簡単な質問があります。セロリの労働者のmongodbに正しく接続する方法は?
デニBertovicは言う:
あなたがシリアライズされたオブジェクトが古い データが含まれている可能性があるため、バックグラウンドタスクを する(例えば、あなたのUserモデルのための)データベースオブジェクトを渡すべきではありません。
@app.task def add(x, y, collection): client = MongoClient('mongodb://localhost:27017/') db = client.wakawaka db[collection].insert_one({'sum':x+y}) return True
か::
client = MongoClient('mongodb://localhost:27017/') db = client.wakawaka @app.task def add(x, y, collection): db[collection].insert_one({'sum':x+y}) return True
私は労働者でデータベースに接続する場合
ので、正しい選択とは何でしょうか?
UPD:私は、私が何かを必要とするたびに、タスクは新鮮なDBに接続し、そして何のリソースが無駄にならない、すべてのタスクの終了時に、私のMongoDB接続をclose()
することができます。それでも、何度もデータベース接続を開いたり閉じたりする必要がありますか?または私は一度接続して何らかの形で新しいバージョンのDBを取得するために接続をリフレッシュできますか?