我有一个设置,我希望能够在consumer_callback中的几行之后确认pika消息,然后继续执行一些更多的时间密集型任务。我已经写了一些代码来做这件事,但是看起来,只有在consumer_callback返回之后才能发送确认。我正在使用皮卡10与选择连接。
我想知道是否有一种方法可以实现这一点。到目前为止,我尝试的方法是:
- 在当前回调中执行常规ACK-> ACK仅在回调返回后发送
- 通过我专门为这种情况创建的不同连接/通道进行常规ack->失败,并显示“未知的交付标签”
- 试图通过SelectConnection上的add_timeout方法偷偷地进入一个回调,然后在consumer_callback返回后立即调用->这会以某种方式扰乱队列通信,并且会发生非常奇怪的事情,所以我假设这不是正确的方法。
任何帮助都非常感谢。也许我需要不同的连接类型?
1条答案
按热度按时间lokaqttq1#
升级到Pika
0.12.0
并遵循the example in this code, or do something similar:link。我使用不同的连接类型来实现这个示例,但您可以理解。Pika的ioloop必须在一个线程中运行,而你的时间密集型任务可以在另一个线程中进行。