Construire une file de tâches qui passe à l'échelle proprement
Il y a une file de tâches dans la base de données — la table jobs avec le statut pending pour les lignes non exécutées. Cinq workers la consultent simultanément : chacun veut saisir la tâche la plus ancienne et la marquer comme « en cours ». Un verrou de ligne classique avec une limite fait que les cinq workers s'entassent sur la même ligne et se sérialisent. Le remède consiste à ignorer les lignes déjà verrouillées et à prendre la suivante qui est libre : chaque worker obtient sa propre tâche et le parallélisme fonctionne sans collisions.
jobs(id SERIAL, status, payload) contient quatre lignes pending (a, b, c, d). Saisis une tâche pending de jobs ayant le plus petit id, fais-la passer à running — les trois autres restent pending.
Connectez-vous pour voir l'historique des soumissions
Se connecterConnectez-vous pour utiliser le Mentor IA
Se connecter