Как циклом выполнять задачи в asyncio.gather
так ребята, смотрите вот есть у меня значит список из стрингсессий sessions = ["первая сессия", "вторая"] и т.д ну вы поняли. лежит у меня этот список в моем бд. У меня есть деф который принимает эти сессии и выполняет за них определенные действия. такие как отправка сообщения и т.д Что же мне нужно так это цикл в asyncio.gather Ну если с примером то чтобы выглядело как-то так:
async def main():
await asyncio.gather(
(work(ClientFunc(i, 543523, "hahafgdsa"))) for i in session)
)
имею ввиду чтобы не выглядело а функционал был похожим по смыслу. думаю понятно что вот такой замудрённый цикл не пашет. выбивает ошибку:
RuntimeError: Task got bad yield: <coroutine object work at 0x0000010E4C9B05C0>
внимание знатоки вопрос: Как оставить асинхронное выполнение функции но так чтобы эти функции я мог вставлять циклом
Чтобы не выглядело вот так:
async def main():
await asyncio.gather(
work(ClientFunc("session1", 543523, "hahafgdsa"))),
work(ClientFunc("session2", 543523, "hahafgdsa"))),
work(ClientFunc("session3", 543523, "hahafgdsa"))),
work(ClientFunc("session4", 543523, "hahafgdsa")))...
)
Ответы (1 шт):
А так тоже не работает ?
await asyncio.gather(
*[work(ClientFunc(i, 543523, "hahafgdsa"))) for i in session]
)