我今天发现了一个相当有趣的问题。我有一个包含2K消息的队列。
消费者:
import rabbitpy
with rabbitpy.Connection('amqp://guest:guest@localhost:5672/%2f') as conn:
with conn.channel() as channel:
queue = rabbitpy.Queue(channel, 'example')
for message in queue.consume_messages():
message.ack()
需要41秒才能收到这些消息并ack
。 (消息与4kB to 52kB
不等)
然而,出版商花了15秒钟发布它们。
通过分析,我发现有sleep
的电话是我们花费 86%的时间。根据我的申请,这是不可接受的。有人能帮助我摆脱这种睡眠吗? (如果CPU周期浪费或任何消息到达之前,我都可以。)