在一条消息中发送图像及其名称- RabbitMQ(Python 3.X)

slsn1g29  于 8个月前  发布在  RabbitMQ
关注(0)|答案(2)|浏览(68)

我目前正在尝试构建一个系统,将图像发送到多个远程服务器,以便对图片进行Open_CV和tesseract。
在一个服务器上,这是好的,因为我重命名我的图像到文件夹之前发送(第一个图像发送自动命名为Image_0)
然后在接收时再次重命名它们,顺序相同,因此名称对应于相同的图像(首先发送Image_0,然后在本地和远程接收,因此命名为Image_0),以便在接收结果时更容易阅读名称。
然后我在本地的traffica.txt文件的末尾收到图像的结果(MRZ区域),如“Image_0 results XXXXBACK <
我的问题-->
我现在想使用多个远程服务器,并使用带有rabbitMQ的WORKQUEUE来完成基本的工作流程编排,并减少图像样本的处理时间。
我如何发送一个图像的名称与该图像在base64中有相应的名称在我的.txt结果文件的末尾,因为我目前的方法不会(t与多个远程服务器工作?
谢谢你的帮助!
以下是我目前发送图像的方式:

for file in natsorted(os.listdir()):
    end_name=file[-4]+ file[-3]+ file[-2]+ file[-1]
    if (end_name != ".txt"):

        try:
            with open(file, "rb") as image:
                message = base64.b64encode(image.read())

            channel.basic_publish(exchange='topic_logs', 
            routing_key=routing_key, body=message)
            print(f"{file} || sended on topic %r \n" % (routing_key))

        except IndexError:
            print("No image given ! ")
            sys.exit(1)

        os.rename(file,"Image_"+str(ComptNames)+".png")
        ComptNames=ComptNames+1
ddarikpa

ddarikpa1#

使用JSON作为消息内容类型。这个JSON对象的一个元素是文件名,另一个是Base64编码的图像。

{
  "filename": "foo.jpg",
  "bytes": "..."
}

消费者必须解析这个JSON消息体。

vdzxcuhz

vdzxcuhz2#

您可以使用AMQP消息头来发送带有消息数据的文件名。您可以使用pika.spec.BasicProperties类来发送标头,就像在this example中一样。当然,这些标题将在接收方提供。

相关问题