2011-01-10 14 views
6

Çeşitli nedenlerle, biraz güvenilmez bir veritabanı sunucusuna sahibiz ve bunun sonucunda bazen benim uygulama tarafından kullanılan veritabanı bağlantıları altından kayboluyor. Bağlantılar, bir Pylons 1.0 web çalışma zamanında bir PostgreSQL db'ye SQLAlchemy 0.6.5 bağlantılarıdır.SQLAlchemy'de havuzlanmış bağlantıları, uygulama koduma teslim etmeden önce nasıl kontrol edebilirim?

İstediğim şey, kullanıcı tarafından görülebilen bir hata olmadan bunlardan en fazla yakalamak için bir yoldur; İdeal olarak, bağlantıyı motordan döndürmeden önce havuz seviyesinde test ederim. Motorun oluşturulmasını kontrol ediyorum, o yüzden ben de oradayım.

Bunu gerçekleştirmenin en iyi (en iddialı/en temiz) yolu nedir? Çek ile kullanım arasındaki bağlantının her zaman olabileceğinin farkındayım, ancak bu ortamda oldukça nadir olacak ve bu yüzden benim için bir endişe kaynağı olmayacak. Eğer kullanım durumu için is_valid_connection nasıl uygulanacağı olduğu için

class ConnectionChecker(sqlalchemy.interfaces.PoolListener): 
    def checkout(self, dbapi_con, con_record, con_proxy): 
     if not is_valid_connection(dbapi_con): 
      # a new connection will be used 
      raise sqlalchemy.exc.DisconnectionError 

Sol:

cevap

4

Bir havuz dinleyicisi kullanabilirsiniz.

İlgili konular