2015-07-03 26 views
5

Tôi đang cố gắng kết nối elasticsearch trong địa phương của mình và tôi tự hỏi làm cách nào để biết kết nối thành công hay thất bại trước khi tiếp tục xử lý: Tôi ước điều đó có thể thực hiện theo cách dưới đây (nó trả quá nhiều giá trị nhưng tất cả vô dụng):kiểm tra trạng thái kết nối elasticsearch trong python

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

tôi hy vọng có một cách để kiểm tra tình trạng kết nối như thế này:

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

Trả lời

10

những gì bạn có thể làm là gọi ping sau khi tạo Elasticsearch insta nce, như thế này:

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

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

Tôi biết bài cũ của mình, nhưng hiện tại thậm chí tôi đang tìm kiếm câu trả lời cho những câu hỏi tương tự, nhưng vấn đề với câu trả lời của bạn là khi elasticsearch dịch vụ là xuống es.ping() doesn' t trả về False nhưng trả lại lỗi –

+1

Bạn vẫn có thể kết thúc cuộc gọi để thực hiện lệnh gọi trong khối try/catch (như trong câu hỏi gốc) và điều đó cũng sẽ thực hiện công việc. – Val

+0

Điều là các trường hợp ngoại lệ được nêu ra bị xích. Tôi có nghĩa là ngoại lệ cuối cùng được nêu ra là ConnectionError nhưng nó cũng làm tăng NewConnectionError và ConnectionRefusedError trước đó, vì vậy mà một trong những nên được xử lý. Bởi vì nó vẫn in dấu vết ngăn xếp của ngoại lệ –

Các vấn đề liên quan