我想同时运行四个mongo查询,等待结果,然后将结果返回给Flask中的API endpoints 中的用户 . 我试图在mongo中使用协程并执行以下操作:

@asyncio.coroutine
def mongo_query(object_type):
    if object_type == 'Type1':
        return Type1.objects[:10]
    elif object_type == 'Type2':
        return Type2.objects[:10]
    return Type3.objects[:10]

然后有一个带有一些逻辑的Flask endpoints :

loop = asyncio.new_event_loop()
tasks = [asyncio.async(mongo_query(object_type)) for object_type in ['Type1', 'Type2', 'Type3']]
return loop.run_until_complete(asyncio.gather(*tasks))

我一直收到错误,说 RuntimeError: There is no current event loop in thread 'Thread-4'. 我不知道如何解决这个问题 . 我意识到Flask是WSGI所以async可能没有意义,但是我试图用很少的运气将asyncio引入我的应用程序 .

目的是同时处理多个mongo查询,等待它们全部解析,然后返回结果而不是同步执行 . 对于Flask应用程序,线程是否会更好用,或者有没有办法解决此错误?