aiohttp: несколько запросов на один и тот же URL возвращают ошибку аутентификации, но URL правильный - PullRequest
0 голосов
/ 27 января 2019

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

{"message": "Ошибка авторизации", "errors": [{"resource": "Application", "field": ""," code ":" invalid "}]}

Этот тип ошибки вы обычно получаете, когда ваш 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())

1 Ответ

0 голосов
/ 27 января 2019

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

...