我想通过werkzeug流式传输大文件。
目前,我的wsgi应用程序如下所示:
from werkzeug.wrappers import Request, Response
from werkzeug.wsgi import ClosingIterator, wrap_file
import os
class Streamer(object):
def __init__(self):
pass
def __call__(self, environ, start_response):
request = Request(environ)
filename = os.getcwd() + "/bigfile.xml"
try:
response = wrap_file(environ, open(filename) )
return response
except HTTPException, e:
response = e
return ClosingIterator(response(environ, start_response))
我不确定该如何处理wrap_file函数返回的对象。
还没有尝试过自己,但我认为以下方法会起作用。
g = file(path_to_bigfile) # or any generator
return Response(g, direct_passthrough=True)
问题内容: 我有一个200MB的文件,想通过下载提供给用户。但是,由于我们希望用户仅下载一次此文件,因此我们这样做: 强制下载。但是,这意味着整个文件必须加载到内存中,这通常不起作用。我们如何以每块kb的速度将文件流式传输给他们? 问题答案: 尝试这样的事情
问题 如何流传输大文件? 方案 要流传输大文件,需要添加传输译码(Transfer-Encoding)区块头,这样才能一边下载一边显示。否则,浏览器将缓冲所有数据直到下载完毕才显示。 如果这样写:直接修改基础字符串(例中就是j),然后用 yield 返回--是没有效果的。如果要使用 yield,就要向对所有内容使用 yield。因为这个函式此时是一个生成器。(注:具体细节请查看 yield 文档,
问题内容: 我正在尝试设置一个非常基本的html5页面,该页面会加载20MB的.mp4视频。看来,浏览器需要下载整个内容,而不仅仅是播放视频的第一部分并在其余部分进行流传输。 我在搜索时发现的最接近的内容…我尝试了“手刹”和“数据回合”,两者均未发挥作用: 关于如何执行此操作或是否可行的任何想法? 这是我正在使用的代码: 问题答案: 确保moov(元数据)在mdat(音频/视频数据)之前。这也称为
使用debezium从Postgres流式更改 已完成的设置: Docker设置。 启动Postgres、zookeeper、kafka和debezium Connector。 使用decoderbufs、wal2json(postgres)设置远程数据库。 使用curl连接到debezium。 创建了一个观察者。 问题:当我启动watcher时,它读取了之前发生的所有更改,但当任何插入完成时,k
问题内容: 看起来Spring 不能将响应直接流式传输到文件而不将其全部缓存在内存中。使用较新的Spring 5实现此目标的合适方法是什么? 我看到人们已经找到了解决此问题的一些变通方法/技巧,但是我对使用正确的方法更感兴趣。 有许多用于下载二进制数据的示例,但几乎所有示例都将其加载到内存中。 问题答案: 使用最近稳定的Spring WebFlux(截至撰写时为5.2.4.RELEASE): 对我
Spring似乎无法将响应直接流式传输到文件,而不将其全部缓冲在内存中。使用较新的Spring 5实现这一点的正确方法是什么? 我看到人们在中找到了一些解决此问题的方法,但我更感兴趣的是使用以正确的方式解决此问题。 有许多使用下载二进制数据的示例,但几乎所有示例都将加载到内存中。
问题内容: 我需要执行一个没有长度的八位字节流的api。它只是实时数据流。我遇到的问题是,当我发出请求时,似乎试图在将信息读入输入流之前先等待内容的结尾,但是它没有看到内容的结尾和NoHttpResponse异常的超时。以下是我的代码的简化版本: 问题答案: 编辑2 因此,如果您对线程/可运行程序/处理程序不满意,而对Android AsyncTask不满意,我将直接转到HttpUrlConnec
问题内容: 我想使用servlet将音频/视频文件流式传输到Web。 我尝试使用以下servlet: 以及以下HTML: 但是,播放器只是在加载…正在加载…正在加载… 这是怎么引起的,我该如何解决? 问题答案: 许多媒体播放器要求服务器支持所谓的HTTP范围请求。也就是说,它必须能够根据要求返回带有标头的媒体文件的特定部分。例如,在10MB长的文件中,只有位于精确索引1000的字节,直到2000为