我有以下制作人代码。
消息是在某些计算后获得的dict数据。我想将消息发布到队列中。然后我将消息重置为空dict以进行其他一些计算。但消费者总是从队列中得到一个空的字典。我感觉消息在发布之前被重置(它是异步的吗?)。如何让它同步?
message = {a big dict ...}
channel.basic_publish(exchange='',
routing_key='my_queue',
body=json.dumps(message))
message = {}
答案 0 :(得分:3)
是的,channel.basic_publish
是异步的,并且以这种方式是正确的。
channel.tx_select
channel.basic_publish(exchange='',
routing_key='my_queue',
body=json.dumps(message))
channel.tx_commit
不等待插入时间,否则,它会变慢。
您应该改变处理邮件的方式, 但如果您想要同步,则可以使用交易。
应该是这样的:
{{1}}
注意交易可以降低表现。
Read here了解更多详情