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

Get transferred file name in RabbitMQ using python pika

我在 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)

我想出了这个主意,对于那些想在消息中包含文件名的人:

我已将文件名与消息连接起来。发送消息后,我确实在消息上进行了拆分:

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)

RabbitMQ 团队监控 the rabbitmq-users mailing list 并且有时只在 Whosebug 上回答问题。


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