Python演示如何使用响应从mongo查询的生成器提供服务
假设我的函数“search()”获取mongodb中的一些内容并返回生成器 我的flask视图函数如下所示Python演示如何使用响应从mongo查询的生成器提供服务,python,flask,Python,Flask,假设我的函数“search()”获取mongodb中的一些内容并返回生成器 我的flask视图函数如下所示 @app.route("search/") def search_page(): generator = search() return Response(generator) 但如果我这样做,我会得到这个错误: Error on request: Traceback (most recent call last): File "/usr/local/lib/python
@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值。我总是可以使用生成器构造列表并返回列表,但我希望避免这样做。也有同样的问题–错误说明它必须写入字节,因此您需要写入字节作为响应。 因此,在
search()
函数中,您可以执行以下操作:
bytes = json.dumps(your_content_from_mongo).decode('utf-8')
这将把你的JSON从mongo解码成字节。你的代码中有两个问题
我在mongo以外的其他库中试用过,但不起作用,你有其他建议吗?谢谢,我认为应该是
解码来将unicode转换成字节。