aiohttp: несколько запросов к одному и тому же URL-адресу возвращают ошибку аутентификации, но URL-адрес правильный

Я использую приведенный ниже код для выполнения 599 асинхронных запросов к Strava API. По какой-то причине ответ, который я получаю для каждого из них,

{"сообщение":"Ошибка авторизации","ошибки":[{"ресурс":"Приложение","поле":"","код":"неверный"}]}

Это тип ошибки, которую вы обычно получаете, когда ваш параметр строки запроса access_token недействителен. Но в этом случае токен на 100% правильный: URL-адрес возвращает правильный ответ, если его просто скопировать и вставить вручную в браузере.

В чем может быть причина ошибки и как ее исправить? Может ли быть так, что сеанс aiohttp как-то мешает процедуре аутентификации?

Примечание: из соображений конфиденциальности токен в приведенном ниже коде является поддельным.

import aiohttp
import asyncio

async def fetch(session, url):
    async with session.get(url) as response:
        print(await response.text())

async def main():
    urls = ['''https://www.strava.com/api/v3/activities/
            280816027?include_all_efforts=true&
            access_token=11111111'''] * 599
    async with aiohttp.ClientSession() as session:
        tasks = [
                    asyncio.ensure_future(fetch(session, url))
                    for url in urls
        ]
        await asyncio.gather(*tasks)

loop = asyncio.get_event_loop()
loop.run_until_complete(main())

person barciewicz    schedule 26.01.2019    source источник
comment
Вы пытались настроить aiohttp для получения отладочного вывода? Какой результат вы получили? Он должен показывать точные HTTP-запросы, которые он отправляет...   -  person Bakuriu    schedule 27.01.2019
comment
Вы не должны использовать многострочную строку в качестве URL-адреса, потому что она сохранит все пробелы, и в результате вы получите неправильный URL-адрес.   -  person Artemiy Rodionov    schedule 27.01.2019
comment
Спасибо @Artemiy, это помогло! Пожалуйста, напишите ответ, чтобы я мог принять.   -  person barciewicz    schedule 27.01.2019


Ответы (1)


Вы не должны использовать многострочную строку в качестве URL-адреса, потому что она сохранит все пробелы, и в результате вы получите неправильный URL-адрес.

person Artemiy Rodionov    schedule 27.01.2019