Apache kafka 无法将kafka用于python

Apache kafka 无法将kafka用于python,apache-kafka,kafka-producer-api,kafka-python,Apache Kafka,Kafka Producer Api,Kafka Python,python:2.6.6 卡夫卡python:1.4.3 我曾经运行过卡夫卡制作人,但它总是提示我这个错误: from kafka import KafkaProducer from kafka import KafkaConsumer from kafka.errors import KafkaError import json class Kafka_producer(): def __init__(self, kafkahost,kafkaport, kafkatopic):

python:2.6.6

卡夫卡python:1.4.3

我曾经运行过卡夫卡制作人,但它总是提示我这个错误:

from kafka import KafkaProducer
from kafka import KafkaConsumer
from kafka.errors import KafkaError
import json

class Kafka_producer():

    def __init__(self, kafkahost,kafkaport, kafkatopic):
        self.kafkatopic = kafkatopic
        service_host = kafkahost+":"+kafkaport
        self.producer = KafkaProducer(bootstrap_servers=service_host)

    def sendjsondata(self, params):
        try:
            # parmas_message = json.dumps(params)
            producer = self.producer
            futur = producer.send(self.kafkatopic, params.encode('utf-8'))
            res = futur.get(timeout=60)
            producer.flush()
            producer.close()
        except KafkaError as e:
            print e

if __name__ == '__main__':
    # test = {
    #     "test":"testtets"
    # }
    # Kafka_producer("http://10.25.245.192","9092","nori-log").sendjsondata(test)
    producer = KafkaProducer(bootstrap_servers='10.25.245.192:9092')
    for _ in range(100):
        producer.send('nori-log', {"test":"test_content"})
回溯(最近一次呼叫最后一次):

文件“KafkaOperation.py”,第11行,在

从卡夫卡进口卡夫卡制作人

文件“/usr/lib/python2.6/site packages/kafka/init.py”,第21行,在

来自卡夫卡消费品进口卡夫卡消费品

文件“/usr/lib/python2.6/site packages/kafka/consumer/init.py”, 第5行,在

从kafka.consumer.group导入KafkaConsumer

文件“/usr/lib/python2.6/site packages/kafka/consumer/group.py”,第行 13,在

从kafka.consumer.fetcher导入fetcher

文件“/usr/lib/python2.6/site packages/kafka/consumer/fetcher.py”, 第19行,在

从kafka.record导入MemoryRecords

文件“/usr/lib/python2.6/site packages/kafka/record/init.py”,第行 1,在

从kafka.record.memory\u记录导入MemoryRecords

文件 “/usr/lib/python2.6/site packages/kafka/record/memory_records.py”, 第27行,在

从kafka.record.default\u记录导入DefaultRecordBatch, DefaultRecordBatchBuilder

文件 “/usr/lib/python2.6/site packages/kafka/record/default_records.py”, 第338行,输入

类DefaultRecordBatchBuilder(DefaultRecordBase, ABCRecordBatchBuilder):

文件 “/usr/lib/python2.6/site packages/kafka/record/default_records.py”, 第378行,在DefaultRecordBatchBuilder中

byte_like=(bytes,bytearray,memoryview)

名称错误:未定义名称“memoryview”

这些代码:

from kafka import KafkaProducer
from kafka import KafkaConsumer
from kafka.errors import KafkaError
import json

class Kafka_producer():

    def __init__(self, kafkahost,kafkaport, kafkatopic):
        self.kafkatopic = kafkatopic
        service_host = kafkahost+":"+kafkaport
        self.producer = KafkaProducer(bootstrap_servers=service_host)

    def sendjsondata(self, params):
        try:
            # parmas_message = json.dumps(params)
            producer = self.producer
            futur = producer.send(self.kafkatopic, params.encode('utf-8'))
            res = futur.get(timeout=60)
            producer.flush()
            producer.close()
        except KafkaError as e:
            print e

if __name__ == '__main__':
    # test = {
    #     "test":"testtets"
    # }
    # Kafka_producer("http://10.25.245.192","9092","nori-log").sendjsondata(test)
    producer = KafkaProducer(bootstrap_servers='10.25.245.192:9092')
    for _ in range(100):
        producer.send('nori-log', {"test":"test_content"})

我将多伦多版本换成了2.2.1

该类型在Python 2.7中是新的。Python2.6.6就在这一点上,并且。您需要升级Python安装。

是的,我已经检查过了,您应该将Python版本至少更改为2.7,这样就可以正常工作了。