python导入第三方库--kafka,报return '<SimpleProducer batch=%s>' % self.async错误的解决方法

前提:使用Python3.8版本
1、首先安装kafka库【pip install kafka】
2、kafka库安装成功后,连接kafka库时,报以下错误:
C:\Users\USER\PycharmProjects\test\venv\Scripts\python.exe C:/Users/USER/PycharmProjects/test/test/tests.pyTraceback (most recent call last):File "C:/Users/USER/PycharmProjects/test/test/tests.py", line 8, in from kafka import KafkaProducerFile "C:\Users\USER\PycharmProjects\test\venv\lib\site-packages\kafka__init__.py", line 23, in from kafka.producer import KafkaProducerFile "C:\Users\USER\PycharmProjects\test\venv\lib\site-packages\kafka\producer__init__.py", line 4, in from .simple import SimpleProducerFile "C:\Users\USER\PycharmProjects\test\venv\lib\site-packages\kafka\producer\simple.py", line 54return '' % self.async^SyntaxError: invalid syntax
代码如下:

import json
from kafka import KafkaProducer

producer = KafkaProducer(bootstrap_servers='****')

msg_dict = {
    "operatorId":"test",#公交公司ID
    "terminalId":"123",#设备Id
    "terminalCode":"123",#设备编码(使用车辆ID)
    "terminalNo":"1",#同一车辆内terminal序号从1开始
}
msg = json.dumps(msg_dict)
producer.send('tqs-admin-event-1', msg)
producer.close()
print("结束")

3、报错原因:3.8版本中,async已经变成了关键字,所以导致不兼容
4、解决方案:执行 pip install kafka-python,就可以解决
在这里插入图片描述
5、以上就可以正常连接kafka,但是使用KafkaProducer的send函数时,会报assert type(value_bytes) in (bytes, bytearray, memoryview, type(None))【以下这个错】
在这里插入图片描述
错误原因:send函数的value_bytes是str类型
解决方案:

import json
from kafka import KafkaProducer

producer = KafkaProducer(bootstrap_servers='192.168.2.230:9092')

msg_dict = {
    "operatorId":"test",#公交公司ID
    "terminalId":"123",#设备Id
    "terminalCode":"123",#设备编码(使用车辆ID)
    "terminalNo":"1",#同一车辆内terminal序号从1开始
}
msg = json.dumps(msg_dict).encode() #这里加了encode 进行了编码
producer.send('tqs-admin-event-1', msg)
producer.close()
print("结束")
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值