Migração de Pipeline: Prefect 1.4 → Prefect 3.0
Visão Geral
Este guia irá ajudá-lo a entender as principais diferenças e como migrar sua pipeline de forma segura.Principais Mudanças
Componente | Prefect 1.4 | Prefect 3.0 |
---|---|---|
Schedules | Python code | YAML configuration |
Flows | @task + Flow() | @flow + @task |
Deployments | Python scripts | YAML files |
Agents | Agents | Work Pools |
Configuration | Python/JSON | YAML |
Pré-requisitos
Antes de começar a migração, certifique-se de que você possui:- ✅ Pipeline Prefect 1.4 funcionando corretamente
- ✅ Acesso completo ao código fonte da pipeline
- ✅ Conhecimento básico de YAML
- ✅ Acesso ao repositório Git da pipeline
Estrutura de Arquivos
Estrutura Atual (Prefect 1.4)
Estrutura Nova (Prefect 3.0)
Passo a Passo da Migração
💡 Dica para Usuários de IDEs com LLM: Se você usa Cursor ou outra IDE com LLM integrada, pode usar o seguinte prompt para automatizar a migração:
1. Gerar Estrutura Base com CookieCutter
Use nosso template do cookiecutter para gerar rapidamente a estrutura de diretórios e arquivos necessários para uma nova pipeline Prefect. Para criar uma nova pipeline, instale uv e rode:flow.py
- Estrutura base do flowprefect.yaml
- Configuração do deploymentDockerfile
- Container para execuçãopyproject.toml
- Dependências do projeto.dockerignore
- Arquivos ignorados no build
2. Análise da Pipeline Atual
Antes de migrar, analise sua pipeline atual:2.1 Analisar Configurações Atuais
Identifique as configurações da sua pipeline de dump de banco:- Schedules: Frequência, horário e timezone de execução
- Parâmetros: Configurações específicas do banco e tabelas
- Dependências: Imports e bibliotecas utilizadas
3. Migração do Schedule
3.1 Analisar o Schedule Atual
Examine seu arquivoschedules.py
atual:
3.2 Converter para YAML
Crie a seção de schedules noprefect.yaml
:
3.3 Mapeamento de Configurações
Prefect 1.4 | Prefect 3.0 | Exemplo |
---|---|---|
timedelta(days=1) | interval: 86400 | 86400 segundos = 1 dia |
timedelta(hours=6) | interval: 21600 | 21600 segundos = 6 horas |
start_date | anchor_date | ”2022-01-01T21:00:00” |
timezone | timezone | ”America/Sao_Paulo” |
table_parameters | parameters | Parâmetros específicos |
4. Migração do Flow
4.1 Identificar o Template
Para pipelines de dump de banco, use o template específico:4.2 Adaptar Imports
4.3 Adaptar Decorators
4.4 Adaptar Parâmetros
5. Configuração do prefect.yaml
5.1 Estrutura Básica
5.2 Configuração de Schedules
6. Configuração de Work Pool
Este repositório utiliza dois work pools principais para execução dos deployments Prefect:- default-pool: Destinado à execução geral de pipelines, incluindo fluxos que não possuem requisitos especiais de rede ou infraestrutura. É o pool padrão para a maioria dos deployments.
- datario-pool: Utilizado para pipelines que acessam bancos de dados ou sistemas internos da IplanRio, especialmente aqueles que exigem conexão via VPN. Esse pool garante que os jobs sejam executados em ambientes com acesso seguro e autorizado aos recursos internos.
7. Migração de Secrets para Infisical
Para pipelines de dump de banco de dados, é necessário configurar as credenciais de acesso no Infisical. Acesse infisical.iplan.dados.rio e configure os secrets nos projetos:- prefect-jobs (produção)
- prefect-jobs-staging (staging)
7.1 Estrutura de Pastas
Crie uma pasta com o nome da pipeline seguindo o seguinte padrão. Exemplo para a pipeline db-gestao-escolar:7.2 Padrão de Nomenclatura
Para pipelines de ingestão de banco de dados, use sempre o padrão:{PIPELINE_NAME_UPPER}__DB_USERNAME
{PIPELINE_NAME_UPPER}__DB_PASSWORD