systemd unit para uvicorn API + cron/timer para scrapers + enrichment #7

Open
opened 2026-04-30 04:04:16 -03:00 by navigator · 0 comments
Owner

Contexto

  • API uvicorn (api.llm_stats:app) era iniciada via nohup por sessão Claude em 12-abr — sem systemd unit, morre no reboot. Foi morta em 28-abr e não voltou.
  • Scrapers e enrichment nunca foram agendados (cron vazio, sem timers customizados). Pipeline 100% manual.

Tarefas

  • /etc/systemd/system/soberania-api.service:
    • User: autonomia
    • WorkingDirectory: /home/autonomia/soberaniadigital
    • ExecStart: .venv/bin/uvicorn api.main:app --host 127.0.0.1 --port 8081 --workers 2
    • EnvironmentFile: /etc/soberania/secrets.env (chmod 600 root)
    • Restart=on-failure, MemoryMax=1G
  • /etc/systemd/system/soberania-scrapers.service + .timer (diário 03:00):
    • Roda scripts/run_scrapers.py que ENCADEA: pncp_full, transparencia, ceis_cnep, comprasgov
  • /etc/systemd/system/soberania-enrich.service + .timer (cada 30 min):
    • Roda scripts/llm_enrich.py em modo "process new contratos_ti_ids without enrichment"
  • /etc/systemd/system/soberania-dashboard.service + .timer (diário 04:00, depois dos scrapers):
    • Roda /usr/local/bin/regen-dashboard.py (sucessor sustentável do fast_regen_dashboard.py)
  • nginx route /auth/* e /api/* → uvicorn :8081 (verificar se já há proxy_pass)

Critério de aceite

Após reboot, todos os serviços sobem sozinhos; após 24h de uptime, dashboard regerou ao menos 1×, scrapers rodaram 1×, enrichment processou ao menos 1 lote.

## Contexto - API uvicorn (`api.llm_stats:app`) era iniciada via `nohup` por sessão Claude em 12-abr — **sem systemd unit**, morre no reboot. Foi morta em 28-abr e não voltou. - Scrapers e enrichment **nunca foram agendados** (cron vazio, sem timers customizados). Pipeline 100% manual. ## Tarefas - [ ] **`/etc/systemd/system/soberania-api.service`**: - User: autonomia - WorkingDirectory: /home/autonomia/soberaniadigital - ExecStart: .venv/bin/uvicorn api.main:app --host 127.0.0.1 --port 8081 --workers 2 - EnvironmentFile: /etc/soberania/secrets.env (chmod 600 root) - Restart=on-failure, MemoryMax=1G - [ ] **`/etc/systemd/system/soberania-scrapers.service`** + `.timer` (diário 03:00): - Roda `scripts/run_scrapers.py` que ENCADEA: pncp_full, transparencia, ceis_cnep, comprasgov - [ ] **`/etc/systemd/system/soberania-enrich.service`** + `.timer` (cada 30 min): - Roda `scripts/llm_enrich.py` em modo "process new contratos_ti_ids without enrichment" - [ ] **`/etc/systemd/system/soberania-dashboard.service`** + `.timer` (diário 04:00, depois dos scrapers): - Roda `/usr/local/bin/regen-dashboard.py` (sucessor sustentável do `fast_regen_dashboard.py`) - [ ] nginx route `/auth/*` e `/api/*` → uvicorn :8081 (verificar se já há proxy_pass) ## Critério de aceite Após `reboot`, todos os serviços sobem sozinhos; após 24h de uptime, dashboard regerou ao menos 1×, scrapers rodaram 1×, enrichment processou ao menos 1 lote.
Sign in to join this conversation.
No description provided.