Python Flask 如何使用响应从 mongo 查询的生成器提供服务

Stu*_*Cat 5 python flask

假设我的函数“search()”在 mongodb 中获取一些内容并返回生成器。

我的烧瓶视图功能看起来像这样

@app.route("search/")
def search_page():
   generator = search()
   return Response(generator)
Run Code Online (Sandbox Code Playgroud)

但是如果我这样做,我会收到这个错误:

Error on request:
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py", line 180, in run_wsgi
    execute(self.server.app)
  File "/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py", line 171, in execute
    write(data)
  File "/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py", line 151, in write
    assert type(data) is bytes, 'applications must write bytes'
AssertionError: applications must write bytes
Run Code Online (Sandbox Code Playgroud)

生成器本身会产生几个 json 值。我总是可以使用生成器来构造一个列表并返回该列表,但我想避免这样做。

dko*_*kol 1

遇到同样的问题 \xe2\x80\x93 错误表明它必须写入字节,因此您需要写入字节作为响应。\n因此在您的search()函数中您可以执行以下操作:

\n\n
bytes = json.dumps(your_content_from_mongo).decode('utf-8')\n
Run Code Online (Sandbox Code Playgroud)\n\n

它将把你的 JSON 从 mongo 解码为字节。

\n