notebook
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
# 0_run_pipeline_v1.0.py
|
||||
|
||||
**Wrapper kolem celé emailové pipeline.** Spustí postupně všechny 4 kroky daily syncu, vždy přes všechny dostupné schránky:
|
||||
|
||||
| # | Krok | Skript |
|
||||
|---|---|---|
|
||||
| 1b | Graph delta sync (inkrementální Mongo update) | `1b_parse_emails_graph_delta_v1.0.py` |
|
||||
| 3 | Download attachments | `3_download_attachments_v1.4.py` |
|
||||
| 4 | Unwrap S/MIME | `4_unwrap_smime_v1.0.py` |
|
||||
| 5 | Enrich fulltext (PG) | `5_enrich_fulltext_emails_v1.3.py` |
|
||||
|
||||
## Politika chyb
|
||||
|
||||
Default je **continue-on-error** — když některý krok selže, pipeline pokračuje dalším (downstream se nezasekne kvůli minor problému). Po vyběhnutí dostaneš souhrnnou tabulku s `OK / FAIL(N)` per krok.
|
||||
|
||||
Použij `--stop-on-error` pokud chceš tvrdou abort při první chybě.
|
||||
|
||||
## Logování
|
||||
|
||||
Každý krok jde do vlastního logu v `/scripts/pipeline_<id>.log`:
|
||||
- `pipeline_1b.log`
|
||||
- `pipeline_3.log`
|
||||
- `pipeline_4.log`
|
||||
- `pipeline_5.log`
|
||||
|
||||
Live výstup se zároveň tee-uje na konzoli (vypneš přes `--quiet`).
|
||||
|
||||
## Argumenty
|
||||
|
||||
| Argument | Hodnoty | Popis |
|
||||
|---|---|---|
|
||||
| `--only` | `1b 3 4 5` | Spustit jen tyto kroky |
|
||||
| `--skip` | `1b 3 4 5` | Přeskočit tyto kroky |
|
||||
| `--stop-on-error` | flag | Zastavit při první chybě (default: pokračovat) |
|
||||
| `--quiet` | flag | Necpat stdout na konzoli (zůstane v logu) |
|
||||
|
||||
## Varianty volání
|
||||
|
||||
```bash
|
||||
# Daily run — vše, všechny schránky:
|
||||
docker exec -it python-runner python /scripts/0_run_pipeline_v1.0.py
|
||||
|
||||
# Jen enrich (např. po manuálním zásahu do Mongo):
|
||||
docker exec -it python-runner python /scripts/0_run_pipeline_v1.0.py --only 5
|
||||
|
||||
# Vše mimo S/MIME (krok 4 občas vyžaduje pip install asn1crypto):
|
||||
docker exec -it python-runner python /scripts/0_run_pipeline_v1.0.py --skip 4
|
||||
|
||||
# Test daily sync bez fulltextu:
|
||||
docker exec -it python-runner python /scripts/0_run_pipeline_v1.0.py --only 1b 3 4
|
||||
|
||||
# Na pozadí, master log:
|
||||
docker exec -d python-runner bash -c "python /scripts/0_run_pipeline_v1.0.py --quiet > /scripts/pipeline_master.log 2>&1"
|
||||
docker exec -it python-runner tail -f /scripts/pipeline_master.log
|
||||
```
|
||||
|
||||
## Cron / nightly automation
|
||||
|
||||
Pro nightly se hodí jednoduchý cron na Unraidu (`/etc/cron.daily/` nebo User Scripts plugin):
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
docker exec python-runner python /scripts/0_run_pipeline_v1.0.py --quiet \
|
||||
> /mnt/user/Scripts/pipeline_$(date +%Y%m%d).log 2>&1
|
||||
```
|
||||
|
||||
Stačí denně, delta sync z minulého stavu trvá ~30s s prázdným backlogem.
|
||||
|
||||
## Exit kódy wrapperu
|
||||
|
||||
| Kód | Význam |
|
||||
|---|---|
|
||||
| 0 | Všechny kroky OK |
|
||||
| 1 | Alespoň jeden krok selhal |
|
||||
| 2 | Žádný krok k běhu (--only + --skip vyloučily vše) |
|
||||
| 127 | Některý skript neexistuje v `/scripts/` |
|
||||
| 130 | Přerušeno Ctrl+C |
|
||||
Reference in New Issue
Block a user