Aller au contenu

Tâches distribuées (Taskiq)

Stream Fusion utilise Taskiq comme système de tâches de fond distribuées avec Redis comme broker.


Architecture

graph LR
 S["Scheduler<br/>×1 singleton"] -->|cron| R[(" Redis<br/>Broker DB 6")]
 W1["Worker #1"] --> R
 W2["Worker #2"] --> R
 R -->|dispatch| W1
 R -->|dispatch| W2

 style S fill:#bf360c,color:#fff
 style R fill:#1b5e20,color:#fff
 style W1 fill:#311b92,color:#fff
 style W2 fill:#311b92,color:#fff

Scheduler = singleton

Le scheduler ne doit jamais avoir plus de 1 replica. Sinon les tâches cron seraient exécutées en double.


Tâches automatiques

Maintenance base de données

Tâche Cron Description
debrid_cache_cleanup 0 */6 * * * Cache debrid expiré
torrent_orphan_cleanup 0 1 * * * Orphelins sans TMDB (>7j)
torrent_dedup 0 2 * * * Dédoublonnage
torrent_group_hash 0 3 * * * Groupement par hash
torrent_group_title_size 0 4 * * * Groupement titre/taille
fix_type_inconsistencies 0 5 * * * Correction types

Nettoyage des clés

Tâche Cron Description
api_keys_cleanup 0 */6 * * * Clés API expirées
peer_keys_cleanup 0 */6 * * * Peer keys expirées

Matching automatique

Tâche Cron Description
tmdb_orphan_matching */30 * * * * Matching TMDB
imdb_orphan_matching */30 * * * * Matching IMDB

Synchronisation

Tâche Cron Description
dmm_sync 0 2 * * * Hashlists DMM
u2p_sync 0 3 * * 0 Nostr NIP-35
peer_sync Configurable Cache inter-instances
imdb_build 0 3 1,15 * * Rebuild DuckDB
imdb_enrich 0 5 * * * Enrichissement Meili

Verrous distribués

Taskiq utilise des verrous Redis pour empêcher les exécutions simultanées :

Verrou Clé Redis TTL Description
Background refresh bg_refresh_indexer:{name} 6h Un refresh par indexeur
Préchargement prefetch_next:{hash} 20 min Un prefetch par épisode
Peer sync peer_sync:{instance_id} 24h Une sync par instance

Activation/désactivation

# Désactiver une tâche
TASK_SCHEDULE_ENABLED_DEBRID_CACHE_CLEANUP=False

# Modifier un horaire cron
TASK_CRON_DEBRID_CACHE_CLEANUP=0 */4 * * *

/admin/Scheduler : activer/désactiver, déclencher manuellement

/admin/Maintenance : nettoyage manuel de la base

Redémarrage

Les changements de cron via variables d'environnement nécessitent un redémarrage du scheduler et des workers.