78 lines
2.7 KiB
Markdown
78 lines
2.7 KiB
Markdown
# 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 |
|