PikaRabbitMQ:如何使用nowait==False(re。Django的频道?

2024-09-27 00:15:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我在用RabbitMQ通道层实现django通道时遇到了一个问题。我已经完成了RabbitMQ教程,浏览了文森特·张的example1和其他几个示例,没有任何问题,但是偶然发现了andygoodwin的example2数据绑定示例的实现。问题似乎出在鼠兔模块上。在

起初,pika==0.10.0引发了以下异常:

pika.exceptions.ChannelClosed: (404, "NOT_FOUND - no exchange 'binding.enquirer' in vhost '/'")

将pika升级到0.11.0b1后,异常更改为

^{pr2}$

追溯到pika的源代码(频道.py),似乎负责取消消费者的方法,basic\u cancel具有以下参数:

nowait==False
callback is None

这是程序不能接受的。我不知道怎么解决这个问题。以下是我的代码(实际上,除了安迪的例子之外,什么都没有):

消费者.py

class Demultiplexer(WebsocketDemultiplexer):
    consumers = {
        "taxpayer": TaxpayerBinding.consumer,
    }
    groups = ["binding.enquirer"]

模型.py

class Taxpayer(models.Model):
    ...

class TaxpayerBinding(WebsocketBinding):
    model = Taxpayer
    stream = "taxpayer"
    fields = ["taxpayer_id", "checksum_status", "name"]

    @classmethod
    def group_names(cls, *args, **kwargs):
        return ["binding.enquirer"]
    def has_permission(self, user, action, pk):
        return True

路由.py

channel_routing = [
    route_class(Demultiplexer, path="^/binding/"),

里面的html模板和javascript现在一团糟,所以除非对解决这个问题至关重要,否则我宁愿现在就不展示它(我根本不懂js,所以我可能会向别人寻求帮助或提出另一个问题,但如果这两个主题不相关,我不想混合使用)。请让我知道,如果这些问题是相关的,我会编辑这个问题。在

另外,我是一个新手,所以我很高兴有任何意见可以让我更好地了解发生了什么。答案越广越好。谢谢。在


Tags: djangopy示例returndefrabbitmq消费者pika

热门问题