# Worker remoto de recolha do IRN

Corre fora do CT do Intel Grid, numa máquina com **outro IP**, e faz só isto:
pede actos à fila do Intel Grid, vai buscar o conteúdo ao portal do IRN e devolve
o HTML. Não fala com a base de dados e não parseia nada — o parser vive num sítio
só, no CT, para não haver duas versões dele à solta.

## Porquê

O tecto de pedidos ao IRN é por endereço IP, e é uma escolha de cortesia nossa.
Uma segunda máquina no mesmo IP não adianta nada; noutra linha duplica a recolha
sem que nenhuma das duas se porte pior.

## Instalação

    python3 -m venv /opt/irn-worker/venv
    /opt/irn-worker/venv/bin/pip install -r requirements.txt

Ficheiros em `/opt/irn-worker`: `irn_worker.py`, `backend/app/{config.py,scrapers}`
copiados do repositório, e um `.env` com valores fictícios de base de dados — o
`config.py` exige-os, o worker nunca os usa.

## Configuração (`/etc/default/irn-worker`)

    IG_URL=http://127.0.0.1:8088     # a boca do túnel SSH para o CT
    IG_WORKER_KEY=igw_...            # app_settings.registry_worker_key no CT
    IG_WORKERS=3                     # corrotinas a partilhar o tecto de ritmo
    IG_BATCH=8                       # actos reclamados de cada vez
    IG_IDLE_SLEEP=300                # espera quando a fila está vazia

## Serviços

    systemctl status irn-tunnel irn-worker
    journalctl -u irn-worker -f

O `irn-tunnel` mantém `ssh -L 8088:127.0.0.1:80` para o CT: a chave de API nunca
sai em claro pela ligação entre as redes.

## Quando o backfill acabar

    systemctl disable --now irn-worker irn-tunnel

E no CT, `delete from app_settings where key = 'registry_worker_key'` — revoga o
acesso sem mexer em mais nada.
