【问题标题】:How do I send a file stream using Quart in Python?如何在 Python 中使用 Quart 发送文件流?
【发布时间】:2020-07-14 11:24:31
【问题描述】:

按照Izmailoff's blog post 中设置的示例,我能够从 Flask 向用户发送远程文件,但是当我切换到Quart 时,我开始收到TypeError: 'function' object is not iterable 错误。

代码与博客上的代码几乎完全相同,我尝试使用await 无济于事,因为它使用object Response can't be used in 'await' expression 出错。

我的代码如下,raw_url 是直接访问 URL:

req = requests.get(raw_url, stream=True)
return Response(stream_with_context(req.iter_content()), content_type=req.headers['content-type'])

【问题讨论】:

  • 有关更多上下文,可以在此处找到堆栈跟踪:pastebin.com/pib4dkAy
  • 我现在找到了一种解决方法,但如果有人对此有解释或答案,我会很感兴趣。 // 删除 stream_with_context() 并仅将响应与请求内容迭代器一起保留似乎有效。

标签: python quart


【解决方案1】:

错误

for data in iterable:  # type: ignore

TypeError: 'function' 对象不可迭代

告诉你stream_with_context() 没有返回iterable 类型的对象。您确实可以通过打印该函数的输出来检查它并查看它返回的内容。

我唯一的猜测是req 模块的iter_content() 返回的值可能与博客上的不同

req.iter_content()

因此错误。我也倾向于认为这也可能是由flask/python 版本的差异引起的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-26
    • 2013-11-04
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 2015-11-14
    • 2012-12-31
    • 1970-01-01
    相关资源
    最近更新 更多