我在用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,所以我可能会向别人寻求帮助或提出另一个问题,但如果这两个主题不相关,我不想混合使用)。请让我知道,如果这些问题是相关的,我会编辑这个问题。在
另外,我是一个新手,所以我很高兴有任何意见可以让我更好地了解发生了什么。答案越广越好。谢谢。在
请参阅此GitHub问题:https://github.com/pika/pika/issues/925
基本上,如果你设置
nowait=True
,你必须设置callback=None
相关问题 更多 >
编程相关推荐