在python中的服务器之间传输PDF文件

时间:2016-12-15 00:10:13

标签: python api pdf

我们有两台服务器(面向客户端和后端数据库),我们希望在这两台服务器之间传输PDF。这是数据流:

  1. 用户从网站请求PDF。
  2. 网站向客户端 - 服务器发送请求。
  3. 客户端服务器从后端服务器(不同的IP)请求PDF。
  4. 后端服务器将PDF发送到客户端服务器。
  5. 客户端服务器将PDF发送到网站。
  6. 1-3和5都很好,但问题是#4。

    我们目前正在使用Flask请求进行API调用,并且可以轻松地传输文本和.csv,但PDF等二进制文件无法正常工作。

    不,我没有任何代码,所以请放轻松。只是寻找可能遇到过这个问题的人的建议。

2 个答案:

答案 0 :(得分:1)

正如你所说,你没有代码,这很好,但我只能提出一些建议。

我不确定你是如何发送你的文件,但我假设你正在使用pythons open函数。

  1. 确保您以字节形式读取文件(例如open('<pdf-file>','rb')

  2. 将文件剪切成块并将其作为一个文件发送,这样就不会冻结或卡住。

  3. 尝试较小的PDF文件,如果这样可以尝试建议#2。

  4. 使用线程,您可以使用它们进行多任务处理。

  5. 拥有一个下载服务器,这可以节省内存并可能节省带宽。此外,它还允许您从烧瓶中跳过PDF发回。

  6. 如果您不需要,请不要使用PDF文件。

  7. 使用库为您完成。

  8. 希望这有帮助!

答案 1 :(得分:1)

我想分享我的解决方案,但要归功于@CoolqB的答案。关键是包括'rb'以正确读取二进制文件并包含codecs库。以下是最终的代码片段:

  1. 客户请求:

    response = requests.get('https://www.mywebsite.com/_api_call')

  2. 服务器响应:

    f = codecs.open(file_name, 'rb').read() return f

  3. 客户端处理:

    with codecs.open(file_to_write, 'w') as f: f.write(response.content) f.close()

  4. 一切都与世界是对的。