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

标签 python flask

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

我的 flask View 函数是这样的

@app.route("search/")
def search_page():
   generator = search()
   return Response(generator)

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

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

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

最佳答案

您的代码中有两个问题。

  1. 您应该确保您的生成器每次都生成字符串类型的值。
  2. 需要使用stream_with_context方法,可以从flask中导入

例子如下:

enter image description here

关于Python Flask 如何使用 Response 从 mongo 查询的生成器提供服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31299905/

相关文章:

python - 我将如何使用 SQLAlchemy 中的 case 语句执行此查询?

python - 尝试在 Flask View 中实例化 WTForms 对象时出现 "Runtime Error: working outside of application context"

用于监控/proc/diskstats 的 Python 库?

python - Django Celery 获取任务计数

python - 运行单个测试有效,但运行多个测试失败 - Flask 和 Pytest

python - 关于 Flask session 的一些问题

python - 对于 SSL 和非 SSL 配置,如何使用子域将 nginx 正确设置为 gunicorn 和 flask 的反向代理?

python - 在windows上使用linux cookies时的解密问题

python - 在 OpenGL 中近似一个球体

python - 使用 pybind11 将抽象类作为参数作为参数传递