私はPython、Celery、cx_Oracleを使っています。共通オブジェクト(DB接続)を共有するセロリタスクの同時実行
私は労働者の束を立ち上げます。これらのワーカーは、データベース接続オブジェクトを共有します。
これは、データベース接続オブジェクト(db_conn
)の作成方法です。 threaded=True
paramenter注:
db_conn = cx_Oracle.connect(user=db_user,
password=db_password,
dsn=dsn,
threaded=True)
これらの労働者によって運営されているタスクが完了するまでに数秒かかるいくつかのクエリを実行する上で主に構成されています。いくつかの作業者が時間的に重複する可能性(並行性)はかなり高いです。
私の質問は、データベース接続オブジェクト(db_conn
)を共有する際に特別な措置を講じる必要がありますか?
セロリーはこれらのことを自動的に処理しますか?つまり、タスクがデータベース接続オブジェクトを使用している場合、Celeryは最初のワーカーが実行を終了するまで他のタスクを待機させますか?そうでない場合は、他のワーカーがそれを使用していない場合にのみ、各ワーカーにデータベース接続オブジェクトを使用させる方法を教えてください。