I'm trying to connect to a Kafka with Kafka-Python, the Kafka cluster has Kerberos that we need to build some commands to do few steps.
I have created one Topic at the cluster and I did the test with ./kafka-console-producer.sh
and ./kafka-console-consumer.sh
and works really well.
But when I try to connect with Kafka-Python I had a problem. See my code below:
def produce():
print ('Producer')
k_producer = KafkaProducer(bootstrap_servers='hostname:6667',
security_protocol='SASL_PLAINTEXT',
sasl_plain_username='machine_usr',
sasl_plain_password='machine_pwd',
sasl_mechanism='PLAIN')
for i in range(10):
print ('Before send')
k_producer.send('myTopic', 'Testing My Topic ' + str(i))
print ('After send')
Well, running this stuff I got this erro message after 30 secconds:
File "C:\Users\m\kafka-python-1.3.1\kafka.zip\kafka\producer\kafka.py", line 328, in __init__
File "C:\Users\m\kafka-python-1.3.1\kafka.zip\kafka\client_async.py", line 202, in __init__
File "C:\Users\m\kafka-python-1.3.1\kafka.zip\kafka\client_async.py", line 791, in check_version
kafka.errors.NoBrokersAvailable: NoBrokersAvailable
I'm running it in a remote machine. And the bootstrap_server I used the Zookeeper hostname and port but didn't work as well.
I found few things about it, and in the git of the Kafka-Python I found that they had implemented.
Is there other way to connect?
If the task is to solve this problem in python, another alternative could be to use confluent-kafka-python library that internally uses librdkafka that is written in C, and supports SASL, and the use of the keytab file. That wouldn't require having a separate Java process for the communication with kafka over SASL.
For instructions also refer to the documentation of the librdkafka library:
https://github.com/edenhill/librdkafka/wiki/Using-SASL-with-librdkafka - general intro
https://github.com/edenhill/librdkafka/blob/master/CONFIGURATION.md - the properties that can be passed into the constructor of confluent_kafka.Producer
and confluent_kafka.Consumer
in python
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With