完整报错:

Traceback (most recent call last):
  File "/Applications/PyCharm.app/Contents/plugins/python/helpers/pydev/pydevd.py", line 1483, in _exec
    pydev_imports.execfile(file, globals, locals)  # execute the script
  File "/Applications/PyCharm.app/Contents/plugins/python/helpers/pydev/_pydev_imps/_pydev_execfile.py", line 18, in execfile
    exec(compile(contents+"\n", file, 'exec'), glob, loc)
  File "/Users/xq/Desktop/data/pycharm_pro/Test_alg/python_kafka/generator.py", line 11, in <module>
    producer = KafkaProducer(bootstrap_servers='localhost:1234')
  File "/Users/xq/.conda/envs/pycharm_env/lib/python3.8/site-packages/kafka/producer/kafka.py", line 381, in __init__
    client = KafkaClient(metrics=self._metrics, metric_group_prefix='producer',
  File "/Users/xq/.conda/envs/pycharm_env/lib/python3.8/site-packages/kafka/client_async.py", line 244, in __init__
    self.config['api_version'] = self.check_version(timeout=check_timeout)
  File "/Users/xq/.conda/envs/pycharm_env/lib/python3.8/site-packages/kafka/client_async.py", line 900, in check_version
    raise Errors.NoBrokersAvailable()
kafka.errors.NoBrokersAvailable: NoBrokersAvailable

解决方法

在初始化的时候传入api的版本,即:
修改:

producer = KafkaProducer(bootstrap_servers='localhost:1234')

producer = KafkaProducer(bootstrap_servers='localhost:1234', api_version=(0, 10, 2))

这个版本对应自己的kafka版本,一个比较安全的值是:0.10.2,更多版本信息可以参考:https://cwiki.apache.org/confluence/display/KAFKA/Compatibility+Matrix

问题解析

python-kafka并不会给太多报错的细节,所以这需要我们查看报错位置,这里的报错:

    self.config['api_version'] = self.check_version(timeout=check_timeout)

可知是api_version的报错,因此我们只需查看相关资料,即可得到解决方案

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐