为什么pykafka中的制作人这么慢?

时间:2018-04-02 18:08:57

标签: python kafka-producer-api pykafka

我使用pykafka编写了一个简单的生产者,但似乎无法让它执行。基本的生产者和生产要求如下。当我用一条小消息调用100次并添加一些时序/分析代码时,大约需要14秒。我理解这是一个异步发送消息,所以我希望它非常快。有什么设置我不见了?我也尝试过min_queued_messages = 1,那些时间大约需要2秒。

from pykafka import KafkaClient
import time

client = KafkaClient(hosts="kafka1.mydomain.com:9092", exclude_internal_topics=False)
topic = client.topics['mytopic']

start = time.time()

for x in xrange(100):
    with topic.get_producer(delivery_reports=False,
                            sync=True,
                            linger_ms=0) as producer:
        producer.produce("This is a message")

end = time.time()
print "Execution Time (ms): %s" % round((end - start) * 1000)

我确实在pycharm中做了这个配置文件,并且说帽子78.8%的时间用在“time.sleep”上了?!为什么会睡觉?

1 个答案:

答案 0 :(得分:1)

SELECT DISTINCT Name FROM SalesPerson WHERE ID NOT IN (SELECT salesperson_id FROM Orders WHERE cust_id = 4) 调用意味着在生产者的生命周期开始时调用一次。像示例代码那样在紧密循环中调用它将导致重复运行初始化序列,这是不必要的并且会增加很多开销。如果将代码更改为以下代码,则代码将更快地运行:

topic.get_producer