brasil.io icon indicating copy to clipboard operation
brasil.io copied to clipboard

import_data async

Open turicas opened this issue 6 years ago • 0 comments

Atualmente existe um script no servidor onde o backend roda, onde é possível atuaizar dados de uma tabela em um dataset - antes disso é preciso subir os dados para o data.brasil.io (de onde o script baixa) e atualizar o data.brasil.io/dataset/<dataset>/_meta/list.html.

Precisamos, de alguma forma, integrar todos esses processos no backend. Eles são divididos nas seguintes tarefas:

  • Coletar novos dados (esse ainda é manual em boa parte dos casos)
  • Enviar novos dados para uma pasta temporária em data.brasil.io (ou algum lugar de onde o servidor possa baixar o arquivo)
  • Baixar o arquivo e executar o import_data
  • Se tudo correr bem, mover o arquivo para o local definitivo e re-gerar o _meta/list.html do dataset (como nessa operação só teremos o arquivo de uma tabela no dataset, para não ter que baixar as outras e re-gerar os SHA512 de todos os arquivos, aqui poderíamos manter um model no backend com os arquivos correspondentes às tabelas, assim seria fácil re-gerar essa listagem)
#!/bin/bash

set -e

APP_NAME="brasilio-web"
DATA_PATH="/root/brasilio-web-data"
#dokku storage:mount $APP_NAME /data:$DATA_PATH
DATASET="$1"
TABLE="$2"

if [ -z "$TABLE" ]; then
        echo "ERROR - Usage: $0 <dataset> <table>"
        exit 1
fi

filename="$DATA_PATH/${DATASET}/${TABLE}.csv.gz"
mkdir -p $(dirname $filename)

echo "Downloading ${DATASET}/${TABLE}..."
wget -qO "$filename" https://data.brasil.io/dataset/$DATASET/${TABLE}.csv.gz

collect_date=$(TZ=America/Sao_Paulo date +'%Y-%m-%d')
dokku run $APP_NAME python manage.py import_data \
        --collect-date="${collect_date}" \
        --no-input \
        $DATASET \
        $TABLE \
        /data/$DATASET/${TABLE}.csv.gz
rm -rf "$filename"
# TODO: enviar email para usuário que fez o POST

Exemplo de um script que executa todas as tarefas acima (chamando o script acima no servidor, ao final): https://github.com/turicas/covid19-br/blob/master/deploy.sh

turicas avatar Mar 31 '20 22:03 turicas