Control Dynami c asyncio.Semaphore - PullRequest
       15

Control Dynami c asyncio.Semaphore

0 голосов
/ 07 апреля 2020

Не уверен, что я выбрал правильный подход. Мне нужно динамически изменять количество запросов, которые я отправляю, для этого я думал, что могу динамически изменять количество семафоров, которые я запускаю. Допустим, я хочу 10 параллельных вызовов в течение первой минуты, затем увеличу до 20 в течение 2 минут, затем уменьшу до 15 и так далее, как нагрузочный тест. Можно ли контролировать dynamic_value во время выполнения?

async def send_cus(cus_id):
  async with ClientSession(connector=TCPConnector(limit=0)) as session:
    num_parallel = asyncio.Semaphore(dynamic_value)

    async def send_cust_2(cust_id):
      async with num_parallel:
        # do something ...

    tasks = list(send_cust_2(cust_id) for cus_id in my_ordered_lst)
    await asyncio.gather(*tasks)
...