TypeError: exchange_declare() got an unexpected keyword argument 'type'的解决办法

在用网上的python代码执行rabbitmq案例的时候遇到了一个错误,困惑了好久发现解决办法。

  • 原因应该为pika版本不同导致的用法不同,解决方法为把type换成exchange_type

具体过程如下:

源代码:

#encoding:utf8  
import pika  

connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))  
channel = connection.channel()  

#作为好的习惯,在producer和consumer中分别声明一次以保证所要使用的exchange存在  
channel.exchange_declare(exchange='logs', exchange_type='fanout')  
#在不同的producer和consumer间共享queue时指明queue的name是重要的  
#但某些时候,比如日志系统,需要接收所有的log message而非一个子集  
#而且仅对当前的message 流感兴趣,对于过时的message不感兴趣,那么  
#可以申请一个临时队列这样,每次连接到RabbitMQ时会以一个随机的名字生成  
#一个新的空的queue,将exclusive置为True,这样在consumer从RabbitMQ断开后会删除该queue  
result = channel.queue_declare(exclusive=True)  

#用于获取临时queue的name  
queue_name = result.method.queue  

#exchange与queue之间的关系成为binding  
#binding告诉exchange将message发送该哪些queue  
channel.queue_bind(exchange='logs',queue=queue_name)  

print (' [*] Waiting for logs. To exit press CTRL+C')  

def callback(ch, method, properties, body):  
    print (" [x] %r" % (body,))  

#从指定地queue中consume message且不确认  
channel.basic_consume(callback,queue=queue_name,no_ack=True)  
channel.start_consuming()

报错如下:

File "receive_logs.py", line 9, in <module>                                    channel.exchange_declare(exchange='logs',type='fanout')
TypeError: exchange_declare() got an unexpected keyword argument 'type'

修改如下:

channel.exchange_declare(exchange='logs', exchange_type='fanout')
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值