Получить перенесенное имя файла в RabbitMQ используя python pika
Я использую pika в Python3 для отправки файлов CSV с одного узла на другой, и здесь все в порядке. Единственное, что мне нужно, - это получить переданное имя файла в принимающем узле (например, filename-2017-01-01.csv).
Есть ли способы сделать это?
Это часть обработки при получении файла.
def callback(ch, method, properties, body):
ch.basic_ack(delivery_tag=method.delivery_tag)
with open('test.csv', 'wb') as write_csv:
write_csv.write(body)
2 ответа
Решение
Команда RabbitMQ контролирует rabbitmq-users
список рассылки и только иногда отвечает на вопросы по Stackru.
Вместо того, чтобы сохранять имя файла вместе с сообщением, вы можете использовать этот метод для добавления пользовательского заголовка с именем файла.
Я придумал эту идею для тех, кто хочет включить имя файла в сообщение:
Я связал имя файла с сообщением. После отправки сообщения я разделил сообщение:
with open(file, 'rb') as csv_file:
return file + csv_file.read().decode()
На другой стороне:
file_name = body.decode().split('.csv')[0]
message = body.decode().split('.csv')[1]
with open('{}.csv'.format(file_name), 'w') as write_csv:
write_csv.write(message)