Python, Celery ve cx_Oracle ile çalışıyorum.Eşzamanlı Kereviz görevleri ortak bir nesneyi paylaşıyor (DB bağlantısı)
Bir sürü işçiyi çalıştırıyorum. Bu çalışanlar bir veritabanı bağlantı nesnesini paylaşıyor.
Veritabanı bağlantı nesnesini (db_conn
) bu şekilde oluşturuyorum. threaded=True
parametresine Not:
db_conn = cx_Oracle.connect(user=db_user,
password=db_password,
dsn=dsn,
threaded=True)
görevleri bu işçiler tarafından yürütülüyor tamamlanması birkaç saniye sürebilir bazı sorguları yürütme ağırlıklı olarak oluşur. Zamanla çakışan birkaç işçinin şansı (eşzamanlılık) oldukça yüksektir.
Soruma sorum: veritabanı bağlantı nesnesini (db_conn
) paylaşırken herhangi bir özel önlem almalı mıyım?
Kereviz bu şeyleri otomatik olarak halleder mi? Yani, eğer bir görev veritabanı bağlantı nesnesini kullanıyorsa, Kereviz ilk işçinin çalışmasını bitirene kadar başka bir görev bekletir mi? Hayır ise, o zaman her çalışanın veritabanı bağlantısı nesnesini yalnızca başka bir çalışan onu kullanmadığında kullanmasına nasıl izin verebilirim?