From b31114520a15477da7ad660765a0240b6f348944 Mon Sep 17 00:00:00 2001 From: Viktor Shlapakov Date: Tue, 21 Apr 2015 17:47:55 +0300 Subject: Clean and simplify retry logic --- kafka/common.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'kafka/common.py') diff --git a/kafka/common.py b/kafka/common.py index cbb4013..50f8a77 100644 --- a/kafka/common.py +++ b/kafka/common.py @@ -82,6 +82,8 @@ RetryOptions = namedtuple("RetryOptions", ["limit", "backoff_ms", "retry_on_timeouts"]) + + ################# # Exceptions # ################# @@ -228,3 +230,18 @@ def check_error(response): if response.error: error_class = kafka_errors.get(response.error, UnknownError) raise error_class(response) + + +RETRY_BACKOFF_ERROR_TYPES = ( + KafkaUnavailableError, LeaderNotAvailableError, + ConnectionError, FailedPayloadsError +) + + +RETRY_REFRESH_ERROR_TYPES = ( + NotLeaderForPartitionError, UnknownTopicOrPartitionError, + LeaderNotAvailableError, ConnectionError +) + + +RETRY_ERROR_TYPES = list(set(RETRY_BACKOFF_ERROR_TYPES + RETRY_REFRESH_ERROR_TYPES)) -- cgit v1.2.1