Python 3.x 无法使用aiohttp发出异步请求

Python 3.x 无法使用aiohttp发出异步请求,python-3.x,aiohttp,Python 3.x,Aiohttp,我有以下pythonapi函数,它需要一些时间来给出输出。它的api端点是abc/abcd。当我从多个ip同时命中该api端点时,它不会给出下一个输出,直到前一个请求未完成。我正在使用aiohttp。我认为api应该同时回答许多请求 async def Logistic(request): container_id = request.query['container_id'] company = request.query['company'] data = mysql

我有以下pythonapi函数,它需要一些时间来给出输出。它的api端点是abc/abcd。当我从多个ip同时命中该api端点时,它不会给出下一个输出,直到前一个请求未完成。我正在使用aiohttp。我认为api应该同时回答许多请求

async def Logistic(request):
    container_id = request.query['container_id']
    company = request.query['company']
    data = mysqlcon("SELECT date,moves,location,vessel,voyage,current_status FROM container_status WHERE date_current in (SELECT max(date_current) FROM container_status) and company_id={0}".format(container_id),"rpa")
    a = {"Result":[]}
    if data == ():
        pass
    else:
        for i in data:
            a["Result"].append(i)
    return web.Response(text=json.dumps(a),headers={'ACCESS-CONTROL-ALLOW-ORIGIN':'*'})

请将所有数据库访问代码(
SELECT…
execution and iteration over returned result)移动到单独的函数中,并在线程池中运行:

def sync_db_request(container_id):
    data = mysqlcon("SELECT date,moves,location,vessel,voyage,current_status FROM container_status WHERE date_current in (SELECT max(date_current) FROM container_status) and company_id={0}".format(container_id),"rpa")
    a = {"Result":[]}
    if data == ():
        pass
    else:
        for i in data:
            a["Result"].append(i)
    return a

async def Logistic(request):
    container_id = request.query['container_id']
    company = request.query['company']
    a = await request.loop.run_in_executor(None, sync_db_request, container_id)
    return web.Response(text=json.dumps(a),headers={'ACCESS-CONTROL-ALLOW-ORIGIN':'*'})

我会尝试你的解决方案,然后回复你。谢谢,你能给我一个使用公钥和私钥的api身份验证示例吗