Sre*_*A R 2 python rabbitmq pika
我有以下生产者代码。
message是经过一些计算得到的dict数据。我想将消息发布到队列。然后我将消息重置为空字典以进行其他一些计算。但消费者总是从队列中得到一个空的字典。我觉得消息在发布之前已重置(是异步的吗?)。如何使其同步?
message = {a big dict ...}
channel.basic_publish(exchange='',
routing_key='my_queue',
body=json.dumps(message))
message = {}
Run Code Online (Sandbox Code Playgroud)
是的,channel.basic_publish是异步的,这样是正确的。
channel.basic_publish不等待插入时间,否则会很慢。
您应该更改处理消息的方式, 但如果您想使其同步,则可以使用事务。
应该是这样的:
channel.tx_select
channel.basic_publish(exchange='',
routing_key='my_queue',
body=json.dumps(message))
channel.tx_commit
Run Code Online (Sandbox Code Playgroud)
注意事务可能会降低性能。
阅读此处了解更多详细信息
| 归档时间: |
|
| 查看次数: |
2371 次 |
| 最近记录: |