我正在使用Python,Celery和cx_Oracle。共享共同對象(數據庫連接)的同時芹菜任務
我推出了一堆工人。這些工作人員共享數據庫連接對象。
這就是我如何創建數據庫連接對象(db_conn
)。注意threaded=True
paramenter:
db_conn = cx_Oracle.connect(user=db_user,
password=db_password,
dsn=dsn,
threaded=True)
任務被這些工人運行主要由上執行一些查詢其需要幾秒鐘才能完成。幾個工人在時間上重疊的機會(併發)非常高。
我的問題是:我應該在共享數據庫連接對象(db_conn
)時採取任何特殊措施嗎?
芹菜會自動照顧這些東西嗎?我的意思是,如果任務正在使用數據庫連接對象,Celery是否會讓其他任務等待,直到第一個工作人員完成運行?如果不是,那麼我怎麼才能允許每個工作人員只有在沒有其他工作人員正在使用它時才使用數據庫連接對象?