Skip to content

feat: habilita/desabilita spider via API em vez de acesso direto ao banco - #1470

Open
diraol wants to merge 2 commits into
mainfrom
feat/enable-disable-spider-via-api
Open

feat: habilita/desabilita spider via API em vez de acesso direto ao banco#1470
diraol wants to merge 2 commits into
mainfrom
feat/enable-disable-spider-via-api

Conversation

@diraol

@diraol diraol commented Sep 2, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • enable_spider/disable_spider (scheduler.py, usados pelo workflow update_spider_status.yaml) passam a chamar PATCH /scraper/spiders/{spider_name} via QueridoDiarioAPIClient, em vez de abrir conexão SQLAlchemy direta com o Postgres.
  • QUERIDODIARIO_DATABASE_URL removida de _job_settings() — não é mais enviada como job setting pra Zyte, já que ApiPipeline, StatsPersist e os monitors do Spidermon já usam a API desde a migração anterior.
  • Workflow update_spider_status.yaml atualizado para usar os secrets QUERIDODIARIO_API_URL/QUERIDODIARIO_API_KEY em vez de QUERIDODIARIO_DATABASE_URL.
  • Motivo: o novo deployment (Kubernetes/Revoada) não expõe o PostgreSQL publicamente para a Zyte/GitHub Actions.

Depende de okfn-brasil/querido-diario-api#108 (endpoint novo).

Test plan

  • pytest tests/test_scheduler.py — 6/6 passando (3 testes novos: enable/disable via client mockado, _job_settings() sem QUERIDODIARIO_DATABASE_URL).
  • Após merge do Should we extract "Inexigibilidade de licitação" as well? #108 na API, atualizar o secret QUERIDODIARIO_API_URL (feito em paralelo) e validar enable-spider/disable-spider manualmente via workflow_dispatch.

🤖 Generated with Claude Code

…anco

O novo deployment (Kubernetes/Revoada) não expõe o PostgreSQL
publicamente. enable_spider/disable_spider no scheduler.py (usados
pelo workflow update_spider_status.yaml) agora chamam
PATCH /scraper/spiders/{spider_name} via QueridoDiarioAPIClient em vez
de abrir uma conexão SQLAlchemy direta. QUERIDODIARIO_DATABASE_URL
também deixou de ser enviada nos job settings da Zyte (_job_settings),
já que nenhum pipeline/extensão/monitor a utiliza mais.

Depende de okfn-brasil/querido-diario-api#108.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DdMDA5GSzUVdc2qTFSTEKH

@caiotheodoro caiotheodoro left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Small and clean. One risk inline on the new client method.


PATCH /scraper/spiders/{spider_name}
"""
response = self.session.patch(

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

risk: this calls session.patch directly instead of going through a _patch helper like _get/_post. The session's Retry only allows GET/POST (line 41 above), so this PATCH gets none of the retry/backoff the rest of the client has - a transient 502/503 during the scheduled workflow fails hard instead of retrying.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Boa observação, obrigado. Corrigido em 5aeac9b: adicionei PATCH a allowed_methods do Retry (a operação é idempotente, só substitui o campo enabled) e extraí um helper _patch análogo a _get/_post para set_spider_enabled usar.

set_spider_enabled chamava session.patch diretamente, mas o Retry
configurado na sessão só permite GET/POST, então uma falha transitória
(502/503) durante o workflow agendado de enable/disable de spiders
falhava sem retry. Adiciona PATCH a allowed_methods (a operação é
idempotente, só substitui o campo enabled) e extrai um helper _patch
análogo a _get/_post.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QiEwVseUsoMM8ztc9iaz2Q
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: novo

Development

Successfully merging this pull request may close these issues.

2 participants