Skip to content

fix(script source): timeout configurabile via client + iniezione client appiattito - #475

Open
Gabrymi93 wants to merge 2 commits into
mainfrom
fix/script-source-timeout
Open

fix(script source): timeout configurabile via client + iniezione client appiattito#475
Gabrymi93 wants to merge 2 commits into
mainfrom
fix/script-source-timeout

Conversation

@Gabrymi93

Copy link
Copy Markdown
Member

Sintesi

Rende configurabile il timeout del source type script (era hardcoded a 600s) e sistema l'iniezione del client per i plugin quando il dataset.yml non dichiara il blocco client:.

Necessario per gli harvest lunghi via script (es. candidate inpa-bandi in dataset-incubator: OPEN ~13 min, CLOSED ~17 min), che venivano uccisi dal limite di 10 minuti.

Contesto collegato

Collegata a intake di dataset-incubator: inpa-bandi e inpa-comunicazioni (reclutamento PA dal Portale inPA).

Cosa cambia

  • Bug fix
  • Nuova funzionalità del motore
  • Nuovo plugin sorgente
  • Modifica contratto pubblico (dataset.yml, path output, schema parquet)
  • Refactor / performance
  • Documentazione
  • Dipendenze o CI

Impatto su contratti pubblici

  • Struttura dataset.ymlraw.sources[].client.timeout ora letto dal source script (campo già usato da http_file/http_post_file, quindi coerente)
  • Path output
  • Schema parquet
  • CLI o MCP tool
  • API pubblica del toolkit

Backward-compatible: default invariato (600s); il campo client.timeout era già documentato per altri source.

Verifica

python -m pytest -q                     # 1375 passed
ruff check toolkit/raw/_fetch_utils.py toolkit/raw/run.py

Test aggiunto: tests/test_script_source.py::test_script_client_timeout_applied verifica che client.timeout venga letto dal subprocess.

- _fetch_script: timeout leggibile da client.timeout (default 600) — gli harvest
  lunghi (es. inPA ~17min) venivano uccisi dal limite hardcoded
- run_raw: se il source non ha il blocco client:, inietta i campi appiattiti
  (timeout/retries/user_agent/headers) da RawSourceConfig.to_dict() — i plugin
  script/http vedevano client vuoto e usavano i default
Regressione per il timeout hardcoded 600s — verifica che client.timeout
venga letto (1s per il test) invece del default.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant