在Python web应用中处理较大文件上传的最佳可扩展方式是什么?

3 投票
2 回答
742 浏览
提问于 2025-04-15 22:56

我们有一个网页应用,可以上传文件。上传的文件并不是特别大(大多数是Word文档之类的),但比一般的网页请求要大很多,这导致我们的服务器(运行在Apache代理后面的zope 2服务器)经常被占用。

现在我主要是在头脑风暴阶段,想找一个通用的方法来解决这个问题。我想到了一些想法:

  • 使用像tornado、diesel或gunicorn这样的Python异步服务器。
  • 用twisted写点东西来处理这个问题。
  • 直接用nginx来处理实际的文件上传。

让我惊讶的是,找到应该采取哪种方法的信息竟然这么困难。我知道做出实际决定需要很多细节,但我更担心的是如何做出这个决定,而不是其他的。有没有人能给我一些建议,告诉我该如何继续?

2 个回答

0

看看能不能直接从用户的浏览器把文件上传到一个静态文件存储服务,比如亚马逊的S3或者Rackspace的CloudFiles服务。

这样的话,你就可以同时处理很多用户的请求了。

1

如果你愿意在你的环境中加入Django,Django的文件上传功能可以支持将文件分成多个小块来上传。

你可以查看Django文档中的文件上传概述部分,了解更多信息。

撰写回答