DEV Community

Wincenty Bertoni Lech
Wincenty Bertoni Lech

Posted on

1 2

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

Speedy emails, satisfied customers

Postmark Image

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Explore a sea of insights with this enlightening post, highly esteemed within the nurturing DEV Community. Coders of all stripes are invited to participate and contribute to our shared knowledge.

Expressing gratitude with a simple "thank you" can make a big impact. Leave your thanks in the comments!

On DEV, exchanging ideas smooths our way and strengthens our community bonds. Found this useful? A quick note of thanks to the author can mean a lot.

Okay