我目前正在尝试构建一个系统,将图像发送到多个远程服务器,以便对图片进行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
2条答案
按热度按时间ddarikpa1#
使用JSON作为消息内容类型。这个JSON对象的一个元素是文件名,另一个是Base64编码的图像。
消费者必须解析这个JSON消息体。
vdzxcuhz2#
您可以使用AMQP消息头来发送带有消息数据的文件名。您可以使用
pika.spec.BasicProperties
类来发送标头,就像在this example中一样。当然,这些标题将在接收方提供。