如何返回二进制文件

5 投票
2 回答
5540 浏览
提问于 2025-04-17 18:20

我想用 bottle 这个 Python 框架来搭建一个网络服务,专门用来提供一些二进制文件,比如 PDF、图片和 EXE 文件,并且需要有身份验证。

请问用 bottle 能不能提供这些文件呢?我找了很久也没找到相关的教程。

性能 怎么样呢?bottle 能处理成千上万的下载请求同时进行吗?

我打算把它和 nginxuwsgi 一起使用。

2 个回答

1

如果你不着急,我建议你试试uWSGI 1.9(它还在开发中,但第一个稳定版本将在10天内发布)。你可以把offload-threads设置为n(n就是你电脑上CPU的数量)。这样,当你从应用程序发送文件时,它会在不同的线程中异步处理(也就是说不会阻塞),这样就能快速释放你的工作线程。虽然在1.4版本中也有离线处理的功能,但在1.9中对应用程序来说是自动的。

2

用Bottle来提供这些文件是完全可以的。你只需要把它们当作静态文件来处理。至于身份验证,我觉得Bottle本身并不支持这个功能(至少我知道的是这样)。不过在性能方面,这就得看你怎么部署了。在普通的线程环境中,每个请求都会分配一个自己的常规线程,我很怀疑你的服务器能否轻松处理成千上万的请求同时到来。不过,文档中提到,使用greenlets可能会帮助你解决这个问题。

资源:

Bottle静态文件服务:http://bottlepy.org/docs/dev/tutorial.html#routing-static-files

Bottle的greenlets:http://bottlepy.org/docs/dev/async.html#greenlets-to-the-rescue

撰写回答