python操作kafka报错:return '<SimpleProducer batch=%s>' % self.async

C:\ProgramData\Anaconda3\python.exe C:/git/base_function/kafka_usage.py
Traceback (most recent call last):
  File "C:/git/base_function/kafka_usage.py", line 6, in <module>
    from kafka import KafkaProducer
  File "C:\ProgramData\Anaconda3\lib\site-packages\kafka\__init__.py", line 23, in <module>
    from kafka.producer import KafkaProducer
  File "C:\ProgramData\Anaconda3\lib\site-packages\kafka\producer\__init__.py", line 4, in <module>
    from .simple import SimpleProducer
  File "C:\ProgramData\Anaconda3\lib\site-packages\kafka\producer\simple.py", line 54
    return '<SimpleProducer batch=%s>' % self.async
                                                  ^
SyntaxError: invalid syntax

错误如上

原因:

因为py3.7里面async已经变成了关键字。所以导致了不兼容。
 
解决办法:
使用最新的kafka版本,但是pyPI上的kafka还没有被替换成最新的,可以使用下面的方法升级kafka python
pip install kafka-python
 
然后问题就解决了。

如用Docker,需要Dockerfile 中安装

requirements.txt 中如果有 kafka-python ,需要先加入卸载脚本 RUN pip uninstall kafka-python
FROM python:3.9.6 AS BASE
WORKDIR /
COPY . .
RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple 
RUN pip install -r requirements.txt
RUN pip install kafka-python==2.0.2
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai    /etc/localtime
ENTRYPOINT ["python","kafka_util.py"]

 

posted @ 2021-11-16 15:01  王叫兽  阅读(1801)  评论(0)    收藏  举报