我有一个Web应用程序,用户可以在其中发布指向PDF的链接,主站点将其链接并发布到微服务,该微服务下载文件并将其处理为jpegs到单独的页面中。如何将文件退回主服务器
用户发布PDF网址,例如http://www.orimi.com/pdf-test.pdf
,
服务器1接收url并将其发送到服务器2,后者唯一的工作就是转换PDF。
服务器2下载文件并将每个页面转换为图像格式
服务器2将各个文件发送回服务器1
服务器1将图像提供给用户
import tempfile
import os
from pdf2image import convert_from_path
import urllib.request
import uuid
# Converts a PDF to individual pages as images
def pdf_to_image(url):
filepath = download_file(url)
pages = convert_from_path(filepath, 500)
temp_dir = tempfile.mkdtemp()
for idx, page in enumerate(pages):
temp_filename = f"page_{idx + 1}.jpg"
temp_page_path = os.path.join(temp_dir, temp_filename)
page.save(temp_page_path, 'JPEG')
# How do I send each 'temp_page_path' back?
# Downloads the file
def download_file(url):
try:
extension = os.path.splitext(url)[-1]
filename = str(uuid.uuid4()).replace("-", "") + extension
fullpath = os.path.join(tempfile.mkdtemp(), filename)
urllib.request.urlretrieve(url, fullpath)
except Exception as e:
fullpath = False
return fullpath
pdf_to_image("http://www.orimi.com/pdf-test.pdf")
代码也需要工作,我需要添加清理过程,但是现在我只需要将图像返回到服务器1。Web App正在Flask上运行。
可能的解决方案:我应该改用Cloud Storage来保存到两台服务器的中心位置。服务器2会将图像转换并保存到存储桶中,然后将gs://路径发送回json吗?