在python中如何将函数循环到方法调用中
我试图为python kafka创建一个简单的函数,但在将字符串循环传递到producer.send_messages方法时遇到了问题在python中如何将函数循环到方法调用中,python,apache-kafka,kafka-python,Python,Apache Kafka,Kafka Python,我试图为python kafka创建一个简单的函数,但在将字符串循环传递到producer.send_messages方法时遇到了问题 from kafka import SimpleProducer, KafkaClient import random import os kafka = KafkaClient('localhost:9092') producer = SimpleProducer(kafka) x = 0 while x!=1: #producer.sen
from kafka import SimpleProducer, KafkaClient
import random
import os
kafka = KafkaClient('localhost:9092')
producer = SimpleProducer(kafka)
x = 0
while x!=1:
#producer.send_messages(b'test1',b'str(i)') #the program will run with this type of input
a=random.random()
message_method= "b"+"'"+topic+"'"+","+"b"+"'"+str(a)+"'"
producer.send_messages(message_method)
我会以这个错误结束
File "<stdin>", line 4, in <module>
File "/usr/lib/python2.7/site-packages/kafka/producer/simple.py", line 52, in send_messages
partition = self._next_partition(topic)
File "/usr/lib/python2.7/site-packages/kafka/producer/simple.py", line 36, in _next_partition
self.client.load_metadata_for_topics(topic)
File "/usr/lib/python2.7/site-packages/kafka/client.py", line 378, in load_metadata_for_topics
kafka.common.check_error(topic_metadata)
File "/usr/lib/python2.7/site-packages/kafka/common.py", line 233, in check_error
raise error_class(response)
kafka.common.UnknownError: TopicMetadata(topic="b'test1',b'0.595202345912'", error=17, partitions=[])
文件“”,第4行,在
文件“/usr/lib/python2.7/site packages/kafka/producer/simple.py”,第52行,发送消息
分区=self.\u下一个\u分区(主题)
文件“/usr/lib/python2.7/site packages/kafka/producer/simple.py”,第36行,在下一个分区中
self.client.load\u主题的元数据(主题)
文件“/usr/lib/python2.7/site packages/kafka/client.py”,第378行,位于加载元数据中,用于加载主题
kafka.common.check\u错误(主题元数据)
文件“/usr/lib/python2.7/site packages/kafka/common.py”,第233行,检查错误
引发错误\u类(响应)
kafka.common.unknown错误:TopicMetadata(topic=“b'test1',b'0.595202345912',错误=17,分区=[])
我非常感谢您提出的建议,使其更具动态性(无需硬编码b'messages'…等),也可以将消息放入卡夫卡中:D您应该这样使用发送消息功能:
producer.send_messages('test1',str(a))
我认为这更合适。为什么要将字符串拆分为单个字符串,然后将它们连接起来?无论如何,写这行的“现代”方式是
message\u method=“b'{}',b'{}''''.format(topic,a)
。是的,这仍然不起作用,错误文件“simpleproducer.py”,第11行,在producer.send\u messages(message\u method)。。。kafka.common.check_error(主题元数据)文件“/usr/lib/python2.7/site packages/kafka/common.py”,check_error raise error_类(响应)kafka.common.unknown错误:TopicMetadata(主题=“b'test1,b'0.23424',error=17,partitions=[])
Oh,我不知道是什么导致了这个错误——我只是想给你一个更简洁的方法来编写这个字符串。你现在拥有的相当于print('h'++'e'++'l'++'l'++'o'++'++'w'++'o'++'r'++'l'++'d')
。是的,我是在做“洞穴人”,但完全感谢你的建议:)。它需要放一个字节producer。发送消息(b'test1',b'str(I)“
由于每个参数前面都有字节传输,因此每个参数前面都有符号,这会导致条目格式错误。