import asyncio
import math
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 valida_pagamento(pedido):
await asyncio.sleep(1)
if pedido["pagamento_aprovado"]:
print(f"Pagamento aprovado para pedido #{pedido['id']}.\n")
return True
else:
print(f"Pagamento recusado para pedido #{pedido['id']}. Pedido cancelado.\n")
return False
async def verifica_estoque(pedido):
await asyncio.sleep(1)
if pedido["estoque_disponivel"]:
print(f"Estoque disponível para pedido #{pedido['id']}.\n")
return True
else:
print(f"Estoque indisponível para pedido #{pedido['id']}. Pedido cancelado.\n")
return False
async def processamento(pedido):
print(f"Processando pedido #{pedido['id']}")
pagamento_valido = await valida_pagamento(pedido)
if not pagamento_valido:
return
estoque_valido = await verifica_estoque(pedido)
if not estoque_valido:
return
print(f"Pedido #{pedido['id']} confirmado! Enviado para entrega.\n")
async def main():
tasks = [ asyncio.create_task(processamento(ped)) for ped in pedidos]
await asyncio.gather(*tasks)
print("Todos os pedidos foram processados!")
asyncio.run(main())