1
resposta

[RESPOSTA]

import asyncio

usuarios = [
    {"nome": "Ana", "vip": True, "notificacoes_ativadas": True},
    {"nome": "João", "vip": False, "notificacoes_ativadas": True},
    {"nome": "Carla", "vip": False, "notificacoes_ativadas": False}
]

async def notificador(usuario):
    if not usuario["notificacoes_ativadas"]:
        await asyncio.sleep(3)
        print(f"{usuario["nome"].capitalize()} desativou as notificações. Nada foi enviado.")
        return

    if usuario["vip"]:
        await asyncio.sleep(1)
        print(f"Notificação VIP para {usuario["nome"].capitalize()} enviada!")
        return

    await asyncio.sleep(2)
    print(f"Notificação normal para {usuario["nome"].capitalize()} enviada!")


async def main():
    tarefas = [asyncio.create_task(notificador(usuario)) for usuario in usuarios]
    print("Enviando notificação...")
    await asyncio.gather(*tarefas)
    print("Todas as notificações foram processadas!")

asyncio.run(main())
1 resposta

Oi, Mauricio! Como vai?

Gostei bastante de como você estruturou as funções assíncronas, ficou bem organizado o fluxo de espera com asyncio.sleep. O uso do asyncio.gather para rodar todas as notificações em paralelo foi uma ótima escolha.

Continue firme nos estudos.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!