浏览代码

Handle HTTP error 419

wip/gradle-reposilite
父节点
当前提交
1d58dd2cc6
共有 1 个文件被更改,包括 18 次插入1 次删除
  1. +18
    -1
      update-poms.py

+ 18
- 1
update-poms.py 查看文件

@@ -1,6 +1,7 @@
#!/bin/python3 #!/bin/python3


import re import re
import random
import argparse import argparse
import logging import logging
import asyncio import asyncio
@@ -30,6 +31,10 @@ done_lock = asyncio.Lock()
num_workers = 50 num_workers = 50




class TooManyRequestsException(Exception):
pass


class PackagePOM: class PackagePOM:
def __init__(self, package: 'Package', pom: str): def __init__(self, package: 'Package', pom: str):
logger.debug(f'{package}: Parsing POM') logger.debug(f'{package}: Parsing POM')
@@ -199,6 +204,8 @@ class Package:
logger.debug(f'{self}: {extension} downloaded') logger.debug(f'{self}: {extension} downloaded')
return await response.text() return await response.text()
break break
elif response.status == 429:
raise TooManyRequestsException()
else: else:
logger.debug(f'{self}: HTTP error {response.status} from mirror {mirror}') logger.debug(f'{self}: HTTP error {response.status} from mirror {mirror}')
else: else:
@@ -250,6 +257,8 @@ class Package:
logger.warning(f'{self}: No matching packages found') logger.warning(f'{self}: No matching packages found')


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

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

queue.task_done() queue.task_done()






正在加载...
取消
保存