我使用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”上了?!为什么会睡觉?
答案 0 :(得分:1)
SELECT DISTINCT Name
FROM SalesPerson
WHERE ID NOT IN (SELECT salesperson_id FROM Orders WHERE cust_id = 4)
调用意味着在生产者的生命周期开始时调用一次。像示例代码那样在紧密循环中调用它将导致重复运行初始化序列,这是不必要的并且会增加很多开销。如果将代码更改为以下代码,则代码将更快地运行:
topic.get_producer