【问题标题】:Unable to catch ElasticSearch Connection Error无法捕获 ElasticSearch 连接错误
【发布时间】:2020-05-02 04:29:28
【问题描述】:

我有一个看起来像这样的模型:

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.")

每当保存一个新主题时,它也会将其保存到 ElasticSearch 中。但是,假设 ElasticSearch 已关闭。如果我保存一个新主题,我将开始收到如下错误:

elasticsearch.exceptions.ConnectionError: ConnectionError(: 无法建立新连接: [WinError 10061] 否 可以建立连接,因为目标机器主动拒绝 它)

这个错误是有道理的,但是我从来没有发现它。 “出事了。”永远不会显示。相反,会一遍又一遍地尝试建立连接。

【问题讨论】:

    标签: django elasticsearch


    【解决方案1】:

    您必须将elasticsearch 的异常类捕获为,

    from elasticsearch.exceptions import ConnectionError as ElasticConnectionError
    
    
    class Topic(models.Model):
        name = models.CharField(max_length=50, unique=True)
    
        def indexing(self):
            try:
                # your try clause
            except ElasticConnectionError:
                raise ValidationError("Something is wrong.")

    在您的情况下,您遇到了 Python 的内置 ConnectionError 异常

    【讨论】:

    • 有没有办法限制连接重试次数?
    • 很遗憾,我不知道
    猜你喜欢
    • 2016-12-28
    • 2015-12-02
    • 2020-02-01
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多