From ecd4d5c3387cae131219dc7410e513812183321b Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Fri, 12 Aug 2022 22:14:53 +0300 Subject: [PATCH] Limit number of custom emoji being transferred simultaneously --- mautrix_telegram/util/file_transfer.py | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/mautrix_telegram/util/file_transfer.py b/mautrix_telegram/util/file_transfer.py index f9a42c5a..aab5ffe9 100644 --- a/mautrix_telegram/util/file_transfer.py +++ b/mautrix_telegram/util/file_transfer.py @@ -233,18 +233,21 @@ async def transfer_custom_emojis_to_matrix( # Inline images can't be videos, let's hope animated webp is supported tgs_args = {**tgs_args, "target": "webp"} + transfer_sema = asyncio.Semaphore(5) + async def transfer(document: Document) -> None: - file_map[document.id] = await transfer_file_to_matrix( - source.client, - source.bridge.az.intent, - document, - is_sticker=True, - tgs_convert=tgs_args, - filename=f"emoji-{document.id}", - # Emojis are used as inline images and can't be encrypted - encrypt=False, - async_upload=source.config["homeserver.async_media"], - ) + async with transfer_sema: + file_map[document.id] = await transfer_file_to_matrix( + source.client, + source.bridge.az.intent, + document, + is_sticker=True, + tgs_convert=tgs_args, + filename=f"emoji-{document.id}", + # Emojis are used as inline images and can't be encrypted + encrypt=False, + async_upload=source.config["homeserver.async_media"], + ) await asyncio.gather(*[transfer(doc) for doc in documents]) return file_map