Почему моя Lambda зависает при попытке скопировать более 21 файла в S3?Python

Программы на Python
Anonymous
Почему моя Lambda зависает при попытке скопировать более 21 файла в S3?

Сообщение Anonymous »

Он отлично работает с 21 файлом, занимает пару секунд. Но если я попытаюсь подать ему больше 21, он зависнет на неопределенный срок и истечет время ожидания (> 30 секунд). Судя по тому, что я видел в Интернете, я очень далек от достижения лимита одновременных запросов S3 (который должен исчисляться тысячами), поэтому я действительно не уверен, что может произойти.
Вот соответствующая часть кода. В частности, она висит в строке await s3_client.copy:

Код: Выделить всё

async def _copy_image(
s3_client, source_key: str, destination_key: str, bucket_name: str
) -> None:
copy_source = {
"Bucket": bucket_name,
"Key": source_key,
}

await s3_client.copy(
CopySource=copy_source,
Bucket=bucket_name,
Key=destination_key,
)

async def copy_images_for_new_guide(
keys: list[str],
new_guide_id: int,
org_id: int,
) -> None:
session = aioboto3.Session()

async with session.client(
"s3",
region_name=variables.secrets.AWS_REGION_NAME,
) as s3_client:
tasks = []
for key in keys:
new_key = (
f"orgs/org_{org_id}/guide_{new_guide_id}/{key.split('/')[-1]}"
)
tasks.append(
_copy_image(
s3_client, key, new_key, variables.settings.IMAGES_BUCKET
)
)

await asyncio.gather(*tasks)
Что может быть причиной такого поведения?


Подробнее здесь: https://stackoverflow.com/questions/786 ... iles-in-s3

Вернуться в «Python»