使用python pika在RabbitMQ中获取传输的文件名

时间:2018-06-12 08:56:51

标签: python rabbitmq pika broker rmq

我在Python3中使用pika将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 个答案:

答案 0 :(得分:1)

RabbitMQ团队监控the rabbitmq-users mailing list,有时只回答StackOverflow上的问题。

您可以使用this method添加带有文件名的自定义标头,而不是将文件名与邮件一起存储。

答案 1 :(得分:0)

我提出了这个想法,对于那些想要在文件名中包含消息的人来说:

我已将文件名与邮件连接在一起。发送邮件后,我确实拆分了邮件:

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)