aiohttp、firebase和firebase管理员-是非阻塞的吗?python 3.6
python 3.6 以下是我的firebase代码,用于检查firebase上是否存在用户:aiohttp、firebase和firebase管理员-是非阻塞的吗?python 3.6,python,python-3.x,python-3.6,aiohttp,firebase-admin,Python,Python 3.x,Python 3.6,Aiohttp,Firebase Admin,python 3.6 以下是我的firebase代码,用于检查firebase上是否存在用户: import firebase_admin from firebase_admin import credentials from firebase_admin import auth cred = credentials.Certificate('wow.json') default_app = firebase_admin.initialize_app(cred) def getIsUser
import firebase_admin
from firebase_admin import credentials
from firebase_admin import auth
cred = credentials.Certificate('wow.json')
default_app = firebase_admin.initialize_app(cred)
def getIsUser(email=None,uid=None):
try:
user = auth.get_user(uid)
is_user = True
except:
is_user = False
return is_user
下面是调用函数的aiohttp:
async def jwt_route(request):
data = await request.json()
uid = data['uid']
is_user = getIsUser(uid=uid)
app.router.add_post('/jwt', jwt_route)
我的问题是getIsUser(uid=uid)是否正在阻塞。如果是阻塞,那么如何使其成为非阻塞?是的,
getIsUser
是一个阻塞调用
在线程池中运行它:
loop=asyncio.get\u event\u loop()
is_user=loop.run_in_executor(无,getIsUser,uid)
我建议采用与安德鲁回答不同的方法。
在我看来,打开线程会使应用程序代码和跟踪bug变得复杂
在有支持asyncio
的库之前,您应该使用restapi,使用aiohttp
异步调用它
对于auth
我使用的是不推荐使用的数据库机密,因此它并不理想,但现在可以使用