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 delivery(pedido):
await asyncio.sleep(pedidos.index(pedido) * 1.5)
print(f'Processando pedido #{pedido["id"]}...')
if not pedido['pagamento_aprovado']:
print(f'Pagamento recusado para pedido #{pedido["id"]}. Pedido cancelado.\n')
return
if not pedido['estoque_disponivel']:
print(f'Estoque indisponível para pedido #{pedido["id"]}. Pedido cancelado.\n')
return
print(f'Pagamento aprovado para pedido #{pedido["id"]}.')
print(f'Estoque disponível para pedido #{pedido["id"]}.')
print(f'Pedido #{pedido["id"]} confirmado! Enviado para entrega.\n')
async def main():
tarefas = [asyncio.create_task(delivery(u)) for u in pedidos[:3]]
await asyncio.gather(*tarefas)
print('Todos os pedidos foram processados!')
asyncio.run(main())