让一台服务器下载并处理文件,然后将其发送到另一台服务器App Engine Flask

时间:2019-09-15 00:11:27

标签: python flask

我有一个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吗?

0 个答案:

没有答案