DEV Community

Wincenty Bertoni Lech
Wincenty Bertoni Lech

Posted on

Instalando o Airflow em um ambiente virtual do python

Tl;Dr

Explicarei como utilizar o pipenv para rodar localmente o airflow sem a necessidade de instalá-lo globalmente.

Introdução

Em algumas situações precisamos desenvolver ou testar aplicativos em ambientes separados de nossas máquinas, para que não sejamos pego falando "na minha máquina funciona".

Neste artigo pretendo explicar como configurar o airflow localmente para que possamos rodá-lo em nossa máquina em um ambiente virtual.

Este artigo não tem a pretensão de explicar o que é o Airflow e nem como utilizá-lo.

Pipenv

O pipenv é um excelente administrador de pacotes no melhor estilo composer (php) ou npm/yarn (javascript) para o Python.

Segundo o seu próprio site oficial "ele automáticamente cria e administra ambientes virtuais para o seu projeto, bem como adiciona/remove pacotes no seu Pipefile quando você instala/desinstala pacotes. Ele também cria o tão importante Pipfile.lock, que é utilizado para produzir construções deterministicas." (https://docs.pipenv.org/)

Neste artigo eu utilizarei o pipenv pois além de ser um excelente administrador de pacotes, como dito acima, ele ainda permite a criação de variáveis de ambiente, o que para o airflow faz-se necessário.

Instalando o Pipenv

Para instalar o pipenv é muito simples e a sua própria documentação já existe uma explicação muito boa, mas... se você quiser saber como instalá-lo continue lendo este tópico.

Se você está utilizando o MacOS, você pode instalar o Pipenv utilizando o Homebrew:

$ brew install pipenv
Enter fullscreen mode Exit fullscreen mode

Ou, se você está utilizando Fedora 28:

$ sudo dnf install pipenv
Enter fullscreen mode Exit fullscreen mode

Você também pode instalar utilizando o pip, neste caso digite:

$ pip install --user pipenv
Enter fullscreen mode Exit fullscreen mode

Para mais referência sobre a instalação leia a documentação oficial.

Airflow

Preparando o Ambiente

Neste artigo estarei utilizando o MacOS e o Python 3.8.3 para fazer as instalações, mas a lógica da utilização do Airflow e do Pipenv não irá diferir muito, a não ser que você esteja utilizando o Windows com Python 2.alguma coisa(sinto muito por isso).

Inicialmente vamos criar uma pasta nova:

 $ mkdir airflow-example
Enter fullscreen mode Exit fullscreen mode

O Pipenv pode criar para você um ambiente virtual automagicamente, contudo, eu prefiro criar uma pasta de ambiente virtual dentro da pasta onde eu estou trabalhando. O Pipenv irá identificar esta pasta e irá salvar todas as dependências nela.

Eis o comando para a criação de uma pasta de ambiente virtual no Python ˆ3

$ python -m venv .venv
Enter fullscreen mode Exit fullscreen mode

Para iniciar o ambiente virtual no terminal nós precisamos digitar o comando:

$ pipenv shell
Enter fullscreen mode Exit fullscreen mode

Agora todos os comando que você digitar no ambiente virtual serão referentes à este, se você quiser confirmar se está dentro do ambiente virtual digite o comando

$ which python
Enter fullscreen mode Exit fullscreen mode

Ele deverá retornar o local do interpretador do seu python que deverá ser o sua pasta .venv que acabamos de criar. Algo como

/Users/Myuser/Desktop/airflow-example/.venv/bin/python

Instalando o Airflow

Com o ambiente virtual devidamente setado, vamos dar inicio à instalação do Airflow.

Caso você não tenha ainda carregado o ambiente virtual este é um excelente momento para fazê-lo:

$ pipenv shell
Enter fullscreen mode Exit fullscreen mode

Inicialmente precisamos adicionar uma variável de ambiente no pipenv, para que possamos instalar o airflow em nosso ambiente virtual. Dessa forma, digite o comando abaixo:

$ echo "AIRFLOW_HOME=${PWD}/airflow" >> .env
Enter fullscreen mode Exit fullscreen mode

Para instalá-lo sem quaisque dependências adicionais basta digitar o comando abaixo:

$ pipenv install apache-airflow
Enter fullscreen mode Exit fullscreen mode

Rodando o Airflow

Agora vamos testar para ver se o Airflow foi devidamente instalado.

Certifique-se de que você está no ambiente virtual:

$ which python
Enter fullscreen mode Exit fullscreen mode

Para rodar o airflow vamos seguir a própria documentação do Airflow

Inicialize o banco de dados:

$ airflow db init
Enter fullscreen mode Exit fullscreen mode

Crie um usuário

airflow users create \
    --username admin \
    --firstname Peter \
    --lastname Parker \
    --role Admin \
    --email spiderman@superhero.org
Enter fullscreen mode Exit fullscreen mode

Inicialize o webserver com a porta default 8080

$ airflow webserver --port 8080
Enter fullscreen mode Exit fullscreen mode

Abra um novo terminal ou rode o webserver acima com a flag -D para seu terminal rodar a execução do webserver sem bloquear o cache do seu terminal.

Em seguida inicialize o scheduler:

$ airflow scheduler
Enter fullscreen mode Exit fullscreen mode

Com os passos acima você já conseguirá visualizar a UI do Airflow no link http://localhost:8080

Imagem da UI do Airflow

Top comments (0)