2015-07-03 27 views
5

Yerelde elasticsearch'e bağlanmaya çalışıyorum ve devam etmeden önce bağlantının başarılı veya başarısız olduğunu nasıl anlayabileceğimi merak ediyorum: umarımpython'da elasticsearch bağlantı durumunu kontrol edin

try: 
    es = Elasticsearch(['http://localhost:9200/'], verify_certs=True) 
except Exception as err: 
    if "Connection refused" in err.message: 
     logging.error("Connection failed") 

böyle bağlantı durumunu kontrol etmek için bir yol yoktur:

if es == false: 
    raise ValueError("Connection failed") 

cevap

10

ne yapabilirsiniz Elasticsearch insta oluşturduktan sonra ping çağrı (o çok fazla değere ancak tüm işe yaramaz döndürür) nce böyle:

es = Elasticsearch(['http://localhost:9200/'], verify_certs=True) 

if not es.ping(): 
    raise ValueError("Connection failed") 
+0

(Ben eski yazı biliyorum, ama şu anda bile aynı sorunun cevabını arıyorum, ama cevap sorun elasticsearch hizmet olduğunda aşağı es.ping olmasıdır) gelmez' t false döndürür, ancak –

+1

hatasını döndürür. Aramayı bir try/catch bloğu içinde (asıl sorudaki gibi) es.ping'e sarabilirsiniz ve bu da işi yapar. – Val

+0

Sorun şu ki, istisnalar zincirlenmiş. Kaldırılan son istisna ConnectionError olduğunu, ancak aynı zamanda NewConnectionError ve ConnectionRefusedError'ı da yükseltir, yani hangisinin kullanılması gerektiği anlamına gelir. Hala –

İlgili konular