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

Processando pedidos de uma loja

import asyncio

pedidos = [
    {"id": 101, "pagamento_aprovado": True, "estoque_disponivel": True},
    {"id": 102, "pagamento_aprovado": True, "estoque_disponivel": False},
    {"id": 103, "pagamento_aprovado": False, "estoque_disponivel": True},
    {"id": 104, "pagamento_aprovado": True, "estoque_disponivel": True},
    {"id": 105, "pagamento_aprovado": False, "estoque_disponivel": False},
]

async def processa_pedido(pedido):
   
    print()
    print(f'Processando pedido # {pedido['id']}...')

    if pedido['pagamento_aprovado'] :
          print(f"Pagamento aprovado para o pedido #{pedido['id']}.")
    else:
          print(f"Pagamento recusado para o pedido #{pedido['id']}. Pedido cancelado.")
          return
                
    if pedido['estoque_disponivel'] :
          print(f"Estoque disponível para o pedido #{pedido['id']}.")
    else:
          print(f"Estoque indisponível para o pedido #{pedido['id']}. Pedido cancelado.")
          return
          
      
    if (not pedido['pagamento_aprovado']) & (not pedido['estoque_disponivel']):
          print(f"Pagamento recusado para o pedido #{pedido['id']}. Pedido cancelado.")
    else:
          print(f"Pedido # {pedido['id']} confirmado! Enviado para entrega")
          
    

async def main():
        tasks = [asyncio.create_task(processa_pedido(pedido)) for pedido in pedidos]
        await asyncio.gather(*tasks)
        print()
        print("Todos os pedidos foram processados!")
asyncio.run(main())
    
1 resposta
solução!

Oi! Como vai?

Gostei bastante da forma como você estruturou a lógica para processar os pedidos de forma assíncrona. Isso demonstra uma ótima compreensão sobre tarefas concorrentes em Python.

Uma dica interessante para o futuro é usar o método asyncio.sleep() para simular o tempo de processamento, o que é bem útil em testes assíncronos. Veja este exemplo:

import asyncio

async def tarefa():
    print("Iniciando tarefa...")
    await asyncio.sleep(2)
    print("Tarefa concluida!")

asyncio.run(tarefa())

Este código simula uma tarefa que leva 2 segundos para ser concluída, representando uma operação demorada como acesso a APIs ou banco de dados.

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