Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Flask登录后,高效地为许多客户端提供大型静态文件_Python_Architecture_Nginx_Webserver_Flask - Fatal编程技术网

Python 使用Flask登录后,高效地为许多客户端提供大型静态文件

Python 使用Flask登录后,高效地为许多客户端提供大型静态文件,python,architecture,nginx,webserver,flask,Python,Architecture,Nginx,Webserver,Flask,我必须向多个客户端提供非常大的静态文件,但有些客户端无法访问所有文件,因此我的服务器必须检查每个客户端的文件权限,并且我不能使用nginx或memcache直接提供文件。同时为多个客户机提供大文件(4到10Mb)服务,同时保持flask服务器响应性的最佳方法是什么 现在我的文件存储在S3上,有没有一种简单的方法可以给客户端一个指向S3的一次性访问密钥重定向,这样他就可以在我检查权限后在S3上下载文件?您应该考虑使用X-Accel-redirect头 基本上,您的flask视图将检查权限,并在适当

我必须向多个客户端提供非常大的静态文件,但有些客户端无法访问所有文件,因此我的服务器必须检查每个客户端的文件权限,并且我不能使用nginx或memcache直接提供文件。同时为多个客户机提供大文件(4到10Mb)服务,同时保持flask服务器响应性的最佳方法是什么


现在我的文件存储在S3上,有没有一种简单的方法可以给客户端一个指向S3的一次性访问密钥重定向,这样他就可以在我检查权限后在S3上下载文件?

您应该考虑使用
X-Accel-redirect

基本上,您的flask视图将检查权限,并在适当的情况下设置一个http头,指示nginx为该文件提供服务


一个快速的google找到了这个要点,它描述了如何以您需要的方式进行访问。

可能通过返回响应来实现。相关:对于S3托管内容,
boto
可以创建一个“临时”URL,该URL在设定的时间限制后过期。我相信你会将浏览器重定向到这样一个URL;Flask只响应重定向,S3负责下载。我已经看到了这一点,但不幸的是,当我重定向时,它会更改URL,这样相对链接就不再起作用了(例如,如果my index.html位于s3上,执行重定向会将浏览器发送到,然后它会查找必须从索引下载的其他文件,但在索引中找不到这些文件)然后在您的问题中说明,也许有人已经解决了该问题。谢谢,为了简单起见,我最后做的是为小文件提供服务器(.html、.js、.css)通过加载它们并使用Flask为它们提供服务,对于较大的文件,使用boto
generate\u url
BTW创建一个带有时间戳的临时私有url,使用X-Accel-Redirect而不是我的解决方案有什么好处?只是用户只看到一个似乎来自我的服务器而不是从S3下载的文件这一事实?