python - 在一条消息中发送带有名称的图像 - RabbitMQ (Python 3.X)
问题描述
我目前正在尝试构建一个系统来将图像发送到多个远程服务器,以便对图片进行一些 Open_CV 和 tesseract。
在一台服务器上没关系,因为我在发送之前将图像重命名为文件夹(发送的第一张图像自动命名为 Image_0)
然后在接收时再次重命名它们,顺序相同,因此名称对应于同一图像(Image_0 首先发送和首先接收,因此在本地和远程都命名为 Image_0),以便在接收结果时更容易读取名称。
然后,在特征结束时,我在本地收到一个 .txt 文件,其中包含图像(机读区)的结果,例如“Image_0 结果 XXXXXXXX<<<
我的问题--->
我现在想使用多个远程服务器并将 WORKQUEUE 与 rabbitMQ 一起使用,以便进行基本的工作流程编排并减少图像样本的处理时间。
我如何发送带有 base64 中该图像的图像名称,以便在我的 .txt 结果文件的末尾具有相应的名称,因为我当前的方法不会(不适用于多个远程服务器?
谢谢你的帮助 !
这是我目前发送图像的方式:
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
解决方案
使用 JSON 作为消息内容类型。这个 JSON 对象的一个元素是文件名,另一个是 Base64 编码的图像。
{
"filename": "foo.jpg",
"bytes": "..."
}
消费者必须解析这个 JSON 消息体。
推荐阅读
- dictionary - 该任务包括一个带有未定义变量的选项。错误是:“ansible.utils.unsafe_proxy.AnsibleUnsafeText 对象”没有属性“数据”\n
- angularjs - 错误:formController 中的 [ng:cpws] 深度观察 - angularJS 1.8.0
- c++ - 原子之间的区别
和整数 - express - 从 .env 导入变量 - Express Cloud 函数 - 显示未定义
- c++ - 获取进程 c++ 使用的所有区域的列表
- angular - 角材料可拖动对话框不起作用
- android - 在@FTS4 Room 数据库中设置唯一索引会导致构建错误
- javascript - 在组件级别获取数据并预渲染/ssr nextjs
- vb.net - 来自文本框的 Datagridview 过滤器
- c - 如何使用openmp优化矩阵向量乘法?