Возникла странная проблема при попытке использовать 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?