Невозможно отловить ошибку соединения ElasticSearch - PullRequest
0 голосов
/ 02 мая 2020

У меня есть модель, которая выглядит следующим образом:

class Topic(models.Model):
    name = models.CharField(max_length=50, unique=True)

    def indexing(self):
    try:
        connections.create_connection()

        obj = TopicIndex(
            meta={'id': self.id},
            name=self.name,
        )
        obj.save()
        return obj.to_dict(include_meta=True)

    except ConnectionError:
        raise ValidationError("Something is wrong.")

Всякий раз, когда сохраняется новый Topi c, он также сохраняет его в ElasticSearch. Однако, скажем, ElasticSearch не работает. Если я сохраню новую Topi c, я начну получать ошибки, подобные этой:

asticsearch.exceptions.ConnectionError: ConnectionError (: Не удалось установить sh новое соединение: [WinError 10061 ] Невозможно установить соединение, потому что целевая машина активно отказалась от него)

Ошибка имеет смысл, однако я ее никогда не улавливаю. "Что-то не так." никогда не отображается Вместо этого соединение пытается быть установлено снова и снова.

1 Ответ

1 голос
/ 02 мая 2020

Вы должны поймать класс исключений elasticsearch как

<b>from elasticsearch.exceptions import ConnectionError as ElasticConnectionError</b>


class Topic(models.Model):
    name = models.CharField(max_length=50, unique=True)

    def indexing(self):
        try:
            # your try clause
        <b>except ElasticConnectionError:</b>
            raise ValidationError("Something is wrong.")

В вашем случае вы ловили встроенный Python ConnectionError исключение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...