- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下生产者代码。
message是经过一些计算得到的dict数据。我想向队列发布消息。然后我将 message 重置为一个空字典以进行其他一些计算。但是消费者总是从队列中得到一个空的字典。我觉得 message 在发布之前被重置了(它是异步的吗?)。如何使其同步?
message = {a big dict ...}
channel.basic_publish(exchange='',
routing_key='my_queue',
body=json.dumps(message))
message = {}
最佳答案
是的,channel.basic_publish
是async的,这种方式是正确的。
channel.basic_publish
不等待插入时间,否则会很慢。
你应该改变你处理信息的方式,但是如果你想同步你可以使用事务。
应该是这样的:
channel.tx_select
channel.basic_publish(exchange='',
routing_key='my_queue',
body=json.dumps(message))
channel.tx_commit
注意交易会降低性能。
Read here更多详情
关于python - RabbitMQ basic_publish 是异步的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47593252/
我正在尝试使用 celery 任务用 pika 发布消息。 from celery import shared_task from django.conf import settings import
我有以下生产者代码。 message是经过一些计算得到的dict数据。我想向队列发布消息。然后我将 message 重置为一个空字典以进行其他一些计算。但是消费者总是从队列中得到一个空的字典。我觉得
我需要在一个交换器上设置多个队列。我想创建一个连接,然后声明多个队列(这行得通),然后在多个队列上发布消息(这行不通)。 我设置了一些测试代码来执行此操作,但它每次都在第二次发布时挂起。我认为它不喜欢
考虑下面的测试代码: import pika class MQ_Client(): connection = None channel = None exchange_name
我是一名优秀的程序员,十分优秀!