类型错误为关键字参数队列获取了多个值



我被困在这个错误上,我无法修复。我找到了相关的案例,但我很难将其应用于我自己的问题。 有人可以帮助我理解为什么会发生这种类型并/或帮助我找到解决方案吗?(请以初学者的身份回复我(

我在树莓派和鼠兔 1.1.0 中使用 python。

这是我的回溯:

File "amqp.py", line 33, in <module>
no_ack=True)
TypeError: basic_consume() got multiple values for keyword argument 'queue

我认为这是相关的代码:

def callback(ch, method, properties, body):
printer.inverseOn()
printer.println(' ' + '{:<31}'.format("TXT MESSAGE"))
printer.inverseOff()
printer.println(body)
printer.feed(3)
print("complete")
print " [x] Received %r" % (body)
channel.basic_consume(callback,
queue='texts',
no_ack=True)

如果有趣,这是.py的其余部分

try:
from urllib.parse import urlparse
except ImportError:
from urlparse import urlparse
import pika, os, sys
from Adafruit_Thermal import *
printer = Adafruit_Thermal("/dev/serial0", 19200, timeout=5)
url_str = os.environ.get('CLOUDAMQP_URL','amqp://xxxxx')
url = urlparse(url_str)
params = pika.ConnectionParameters(host=url.hostname, virtual_host=url.path[1:],
credentials=pika.PlainCredentials(url.username, url.password))
connection = pika.BlockingConnection(params)
channel = connection.channel()
channel.queue_declare(queue='texts')
def callback(ch, method, properties, body):
printer.inverseOn()
printer.println(' ' + '{:<31}'.format("TXT MESSAGE"))
printer.inverseOff()
printer.println(body)
printer.feed(3)
print("complete")
print " [x] Received %r" % (body)
channel.basic_consume(callback,
queue='texts',
no_ack=True)
try:
channel.start_consuming()
except KeyboardInterrupt:
print "Break detected"
channel.stop_consuming()
connection.close()
sys.exit()

不确定您使用的是哪个 pika 版本;但根据 [1],回调参数是第二个。 队列参数排在第一位。即

channel.basic_consume("texts", callback, no_ack=True)

[1] - https://pika.readthedocs.io/en/stable/modules/adapters/blocking.html#pika.adapters.blocking_connection.BlockingChannel

最新更新