заблокировать функцию asyncio при работе более 100? - PullRequest
1 голос
/ 19 января 2020

Это будет плохое объяснение, но я не знаю, как еще это сказать, так что потерпите меня, пожалуйста. У меня есть одна функция:

async def request():
    # this can only be called n times at once

Но, как говорится, она может быть вызвана только n раз. Возможно ли иметь какой-то пул с ограниченным количеством объектов, чтобы я мог сделать это:

async def request():
    await with poolOfOneHundred.acquire():
        # do something

, а затем python получит 100 из них, а затем, как только он достигнет 101-го будет ждать в ожидании с оператором до завершения другой функции request (), тогда одна блокировка в пуле будет свободна.

Это вещь? Если нет, то как я могу реализовать что-то подобное?

Имеет ли это какой-то смысл?

1 Ответ

0 голосов
/ 19 января 2020

Вы ищете asyncio.Semaphore .

Вот пример того, как его использовать.

...