Próbuję połączyć elastyczne wyszukiwanie w moim lokalnym i zastanawiam się, skąd mogę wiedzieć, że połączenie zakończyło się sukcesem lub zakończyło się niepowodzeniem, zanim przejdzie dalej proces: Chciałbym, żeby było to możliwe w sposób podany poniżej, ale nie (zwraca zbyt wielu wartości, ale bezużyteczne):sprawdź stan połączenia elasticsearch w pythonie
try:
es = Elasticsearch(['http://localhost:9200/'], verify_certs=True)
except Exception as err:
if "Connection refused" in err.message:
logging.error("Connection failed")
mam nadzieję, że istnieje sposób, aby sprawdzić stan połączenia tak:
if es == false:
raise ValueError("Connection failed")
Znam jego stary post, ale obecnie nawet ja szukam odpowiedzi na to samo pytanie, ale problem z twoją odpowiedzią jest taki, że gdy usługa elasticsearch jest wyłączona es.ping() doesn ' t zwraca False, ale zwraca błąd –
Nadal można zawinąć wywołanie do es.ping w bloku try/catch (jak w oryginalnym pytaniu) i to by również wykonało zadanie. – Val
Chodzi o to, że wyniesione wyjątki są powiązane. Mam na myśli ostatni zgłoszony wyjątek ConnectionError, ale także podnosi wartości NewConnectionError i ConnectionRefusedError przed tym, więc należy się z nimi obchodzić. Ponieważ nadal drukuje ślad stosu wyjątku –