Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] Sistema de notificação inteligente

import asyncio

# Base de dados: Uma lista de dicionários para facilitar a expansao
# Prioridades: 1 para VIP, 2 para Comum, 3 para Desvinculado
usuarios = [
    {"nome": "Ana", "tipo": "VIP", "prioridade": 1, "ativo": True},
    {"nome": "Bruno", "tipo": "VIP", "prioridade": 1, "ativo": True},
    {"nome": "Joao", "tipo": "Comum", "prioridade": 2, "ativo": False},
    {"nome": "Maria", "tipo": "Comum", "prioridade": 2, "ativo": True},
    {"nome": "Carla", "tipo": "Desvinculado", "prioridade": 3, "ativo": True},
    {"nome": "Douglas", "tipo": "Desvinculado", "prioridade": 3, "ativo": True},
]

async def processar_notificacao(user):
    # Simula o processamento paralelo (todos esperam juntos)
    await asyncio.sleep(1)
    
    nome = user["nome"]
    
    # Logica de filtro
    if user["prioridade"] == 3:
        msg = f"USUARIO {nome}: Conta desvinculada. Nao notificar."
    elif not user["ativo"]:
        msg = f"USUARIO {nome}: Notificacoes desativadas pelo usuario."
    else:
        prefixo = "[VIP]" if user["prioridade"] == 1 else "[COMUM]"
        msg = f"{prefixo} Notificacao enviada para {nome}."
    
    # Retornamos a prioridade para poder ordenar depois
    return (user["prioridade"], msg)

async def main():
    print(f"Processando {len(usuarios)} usuarios simultaneamente...\n")
    
    # Dispara todas as tarefas de uma vez
    tarefas = [processar_notificacao(u) for u in usuarios]
    resultados = await asyncio.gather(*tarefas)
    
    # Ordena por prioridade (1, 2, 3)
    resultados.sort()
    
    # Exibe o resultado final organizado
    for _, mensagem in resultados:
        print(mensagem)

if __name__ == "__main__":
    asyncio.run(main())
1 resposta
solução!

Olá, Marinaldo! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de asyncio para executar tarefas de forma assíncrona em Python, utilizou muito bem o asyncio.gather para processar múltiplos usuários simultaneamente e ainda compreendeu a importância da ordenação por prioridade para organizar os resultados de maneira lógica.

Continue postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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