Skip to content

KafkaProducer hangs in busy loop after delivery timeout #2615

Closed
@pelt

Description

@pelt

After producing one message and after the delivery timeout expires, the producer thread seems to be hanging in a busy loop. This requires unnecessary CPU cycles. Did I something wrong in the configuration?

import logging
import sys
import time
from datetime import timedelta

import kafka  # kafka-python 2.2.4

logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
logging.getLogger('kafka').setLevel(logging.DEBUG)


def main():
    delivery_timeout = timedelta(seconds=2)

    producer = kafka.KafkaProducer(
        bootstrap_servers="localhost:9092",
        request_timeout_ms=int(delivery_timeout.total_seconds() * 1000 / 2),
        delivery_timeout_ms=int(delivery_timeout.total_seconds() * 1000),
    )

    # at least one message must be produced to trigger the issue
    producer.send("demo",  b"message")

    # simulate time without producing messages
    # after delivery_timeout_ms the poll() hangs in a busy loop
    time.sleep(delivery_timeout.total_seconds() + 1)


if __name__ == '__main__':
    main()

kafka.log

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions