Python aiohttp.ClientPayloadError с Artifactory API - PullRequest
0 голосов
/ 06 января 2020

Возникла странная проблема при попытке использовать aiohttp / asyncio с Artifactory REST API.

Странно то, что приведенный ниже код прекрасно работает для 'url_2', но постоянно завершается ошибкой с aiohttp.client_exceptions.ClientPayloadError: Response payload is not completed для 'url_1' , Как видите, между этими URL нет абсолютно никакой разницы.

import aiohttp
import asyncio

user_name = 'username'
user_password = 'password'

url_1 = 'https://someorg.jfrog.io/someorg/api/storage/repo/folder-xxx' # fails
url_2 = 'https://someorg.jfrog.io/someorg/api/storage/repo/folder-yyy' # works

async def fetch(url, user_name, user_password):
    async with aiohttp.ClientSession(auth=aiohttp.BasicAuth(user_name, user_password)) as session:
        remote_resp = await session.request("GET", url)
        return await remote_resp.json()

r = asyncio.run(fetch(url_1, user_name, user_password))
print(r)

Я думаю, что это как-то связано с кусками, так как они здесь это заявляют: https://docs.aiohttp.org/en/stable/client_reference.html#aiohttp .ClientPayloadError

class aiohttp.ClientPayloadError

Это исключение может быть вызвано только при чтении полезной нагрузки ответа, если возникает одна из следующих ошибок:

  • недопустимое сжатие
  • неправильно сформированное чанкованное кодировка
  • недостаточно данных, которые удовлетворяют HTTP-заголовку Content-Length.

Буквально застрял и понятия не имею: FYI: дублированная проблема в aio-lib в https://github.com/aio-libs/aiohttp/issues/2076

Может ли кто-нибудь указать направление хотя бы отладки и определить причину root?

...