Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中如何将函数循环到方法调用中_Python_Apache Kafka_Kafka Python - Fatal编程技术网

在python中如何将函数循环到方法调用中

在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

我试图为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.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)“
由于每个参数前面都有字节传输,因此每个参数前面都有符号,这会导致条目格式错误。