Преглед изворни кода

Handle HTTP error 419

wip/coursier
Sindre Stephansen пре 2 година
родитељ
комит
2bb8ca18d8
1 измењених фајлова са 16 додато и 3 уклоњено
  1. +16
    -3
      update-poms.py

+ 16
- 3
update-poms.py Прегледај датотеку

@@ -31,6 +31,10 @@ done_lock = asyncio.Lock()
num_workers = 50


class TooManyRequestsException(Exception):
pass


class PackagePOM:
def __init__(self, package: 'Package', pom: str):
logger.debug(f'{package}: Parsing POM')
@@ -153,7 +157,7 @@ class Package:
return await response.text()
break
elif response.status == 429:
logger.error(f'{self}: HTTP error 429 (Too many requests). Retry after {response.headers["Retry-After"]}')
raise TooManyRequestsException()
else:
logger.error(f'{self}: HTTP error {response.status} from mirror {mirror}')
else:
@@ -205,6 +209,8 @@ class Package:
logger.warning(f'{self}: No matching packages found')

self._verified = False
elif response.status == 429:
raise TooManyRequestsException()
else:
self._verified = False
logger.error(f'{self}: HTTP error {response.status} downloading pom')
@@ -270,8 +276,15 @@ async def download(package: Package, queue: asyncio.Queue) -> None:
async def worker(queue: asyncio.Queue) -> None:
while True:
package = await queue.get()
await download(package, queue)
await asyncio.sleep(random.random())

while True:
try:
await download(package, queue)
break
except TooManyRequestsException:
logger.debug('Too many requests. Delaying next attempt')
await asyncio.sleep(3*random.random())

queue.task_done()




Loading…
Откажи
Сачувај