如何使用Pylons提供大文件?
我正在写一个基于Pylons的下载网关。这个网关的客户端会通过文件的ID来访问文件:
/file_gw/download/1
在内部,文件是通过HTTP从一个内部文件服务器获取的:
http://internal-srv/path/to/file_1.content
这些文件可能非常大,所以我想要以流的方式传输内容。我把关于文件的元数据存储在一个叫StoredFile的模型对象里:
class StoredFile(Base):
id = Column(Integer, primary_key=True)
name = Column(String)
size = Column(Integer)
content_type = Column(String)
url = Column(String)
基于这些信息,怎样写我的file_gw控制器才是最好的(也就是架构上最合理、性能最优等)方法呢?
3 个回答
0
最合理的做法是让控制器把用户引导到亚马逊的S3服务去下载文件,并且把文件存储在亚马逊的S3上。
1
我建议可以考虑使用nginx和http://wiki.nginx.org/XSendfile或者类似的东西。