event_enqueued = False enqueue_retries = 0 while (not event_enqueued and enqueue_retries < KAFKA_CONFLUENT_RETRY_BUFFER_FULL): try: # Produce the message. enqueue_retries += 1 kafka_producer.produce(message_topic, message_value, message_key) event_enqueued = True except BufferError as e: if enqueue_retries < KAFKA_CONFLUENT_RETRY_BUFFER_FULL: logging.warning( 'Local produce queue full, waiting for ' 'events delivered.') kafka_producer.poll(0.5) else: logging.error("Failed to enqueue an event to the " "local kafka producer queue after %d " "retries.".format(enqueue_retries)) raise e # If not async, flush the Kafka produce buffer now and block # until we are done. if not async: kafka_producer.flush() # Non blocking poll kafka_producer.poll(0) finally: