Pular para conteúdo

Execução local

Execute os comandos na raiz do repositório, após seguir a instalação.

Primeira carga completa

poetry run python -m air_traffic_beam.run_all --max-collections 1 --interval-seconds 1

O atalho equivalente é make run. A execução coleta uma resposta, transforma o arquivo Bronze recém-criado em Silver e usa a Silver dessa carga para produzir Gold. Uma falha interrompe a sequência e retorna código de saída diferente de zero.

Ao terminar, confira os arquivos em data/bronze/aircraft_states/, data/silver/aircraft_states/, data/gold/latest/ e data/gold/traffic/. Os relatórios JSON ficam em data/observability/.

Abrir o dashboard

Em outro terminal:

poetry run streamlit run src/air_traffic_beam/dashboard/app.py

Abra o endereço exibido pelo Streamlit, normalmente http://localhost:8501. O botão Atualizar dados recarrega os artefatos; abrir o painel não inicia uma coleta.

Executar etapas separadas

poetry run python -m air_traffic_beam.collectors.aircraft_states --max-collections 1 --interval-seconds 1
poetry run python -m air_traffic_beam.pipelines.bronze_to_silver --runner=DirectRunner --direct_num_workers=1
poetry run python -m air_traffic_beam.pipelines.silver_to_gold --runner=DirectRunner --direct_num_workers=1

Os comandos isolados usam entradas históricas por padrão: Bronze → Silver lê o padrão data/bronze/aircraft_states/**/*.jsonl; Silver → Gold lê os Parquets sob data/silver/aircraft_states. Reprocessar a mesma Bronze cria novos arquivos Silver, e agregá-los junto aos anteriores pode contar observações repetidas.

Para limitar o processamento a uma carga, prefira run_all ou passe --input com o arquivo desejado. Consulte Bronze → Silver e Silver → Gold para os argumentos de saída.

Repetir a coleta em lotes

make stream

Por padrão, cada ciclo faz 15 coletas, com 1 segundo entre requisições, processa as três camadas e espera 300 segundos após o processamento. O período total inclui o tempo de coleta e transformação.

Para usar três coletas espaçadas por 60 segundos:

make stream STREAM_MAX_COLLECTIONS=3 STREAM_COLLECTION_INTERVAL_SECONDS=60 STREAM_INTERVAL_SECONDS=300

Use Ctrl+C para parar. Uma falha encerra o loop. Em caso de HTTP 429, consulte o tempo de espera indicado pela API antes de reiniciar.

Diagnóstico

poetry run python -m air_traffic_beam.run_all --verbose

O orquestrador grava logs técnicos em data/observability/logs/pipeline.log. Veja Logs e relatórios para interpretar as contagens e as limitações dos relatórios.