es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cuál es la manera adecuada de introducir encabezados con TOKEN en una solicitud API asynco aiohttp?

Necesito descargar datos de muchos usuarios diferentes en una API muy lenta, así que decidí hacer solicitudes paralelas. Después de probar con hilos múltiples y multiproceso, decidí que la descarga asincrónica sería lo mejor en mi caso, y mi código funciona para algunos casos que he intentado sin la cabecera que incluye Bearer Auth … pero en este caso me da un error de ClientConnectorCertificateError … ¿Alguna idea de lo que estoy haciendo mal?

import aiohttp
import asyncio
import time

start_time = time.time()
headers = {'accept': 'application/json','Authorization': "Bearer {}".format(token)}

async def get_cch(session, url):
    async with session.get(url, headers=headers) as resp:
        cch = await resp.json()
        x = cch['data']['contractId']
        return open(f'{x}.json', 'w').write(json.dumps(cch))

async def main():

    async with aiohttp.ClientSession(headers=headers) as session:

        tasks = []
        for contract in range(len(file_name_list)):
            start_date = '2018-01-01'
            end_date = '2018-01-05'
            url = 'https://apinergia.somenergia.coop/cch/'+file_name_list[contract]+'?tariff=None&type=tg_cchfact&from_='+start_date+'&to_='+end_date+'&limit=30000'
            tasks.append(asyncio.ensure_future(get_cch(session, url)))

        original_cch = await asyncio.gather(*tasks)
        for cch in original_cch:
            print(cch)

await main()

print("--- %s seconds ---" % (time.time() - start_time))
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que estás teniendo problemas con el encabezado de autenticación “Bearer Auth” en tu código. ¿Has intentado utilizar un método de autenticación diferente? Puede valer la pena investigar otros métodos de autenticación que puedan ser más adecuados para tu caso de uso. Además, es posible que desees verificar si el “token” que estás usando es válido y tiene los permisos correctos.

Comments are closed.