0

我正在尝试从 python 向 RabbitMQ 发送 XML 文件,但出现以下错误

错误

File "<ipython-input-134-8a1b7f8b2e41>", line 3
    channel.basic_publish(exchange='',queue='abc',''.join(lines))
                                                                 ^
SyntaxError: positional argument follows keyword argument

我的代码

import ssl
!pip install pika
import pika
ssl_options = pika.SSLOptions(ssl._create_unverified_context())
credentials = pika.PlainCredentials(username='abcc', password='abcc')
connection = pika.BlockingConnection(pika.ConnectionParameters(
        host='xxxx', port=5671, virtual_host ='xxx', credentials=credentials, 
        ssl_options=ssl_options))
channel = connection.channel()
result = channel.queue_declare(queue='abc')
with open('20200205280673.xml', 'r') as fp:
    lines = fp.readlines()
channel.basic_publish(exchange='',queue='abc',''.join(lines))

上面的代码有什么问题?

4

1 回答 1

1

正如@ymz 建议的那样,您缺少方法body中的密钥basic.publish。此外,该basic_publish方法没有称为 的参数queue。请查看它的实现文档

编辑#1:我已经在别处回答了这个问题如何使用 Python 将 XML 文件发送到 RabbitMQ?

编辑#2:自动发布 XML 文件。假设所有文件都存在于一个名为xml_files

import os

DIR = '/path/to/xml_files'

for filename in os.listdir(DIR):
    filepath = f"{DIR}/{filename}"
    with open(filepath) as fp:
        lines = fp.readlines()
    channel.basic_publish(exchange='exchange', routing_key='queue', body=''.join(lines))
于 2020-02-25T04:09:07.687 回答