Tâches durables et readiness
Exploiter la file PostgreSQL, le cron, les reprises, la déduplication et les sondes de vie et de dépendances.
Synchronisé avec le commit
7d452a6du starter.
Pourquoi persister le travail
Une instance serverless peut être gelée dès la réponse envoyée. Les actions qui doivent aboutir—emails, crédits, suppression d’objets, export et effacement de compte—sont écrites dans jobs, jamais laissées dans une promesse non attendue.
Les types actuels couvrent emails, invitations, crédits d’inscription, Slack, stockage, réservations et cycle de vie de compte.
Mettre en file
await enqueueJob("welcome_email", { email, name, userUuid }, {
dedupeKey: `welcome:${userUuid}`,
subjectUserUuid: userUuid
});dedupeKey rend l’enqueue idempotent. Les UUID de sujet permettent aux workflows de confidentialité d’annuler ou nettoyer le travail. Les handlers doivent eux aussi être idempotents.
Runner
GET /api/cron/jobs exige Authorization: Bearer $CRON_SECRET. Vercel l’appelle toutes les cinq minutes ; ailleurs, planifiez cet appel.
Le runner réclame un job via FOR UPDATE SKIP LOCKED, accepte les exécutions concurrentes, utilise un lease de cinq minutes, limite un handler à 20 secondes et un drain à 40, réessaie cinq fois par défaut avec backoff depuis 30 secondes et conserve les résultats 14 jours. Il nettoie aussi les uploads abandonnés et les événements Stripe bloqués.
Vie et préparation
/api/health vérifie seulement le processus. /api/ready contrôle configuration, base et migrations, Redis distribué et état de la file. Une dépendance critique absente renvoie 503 ; une file dégradée est signalée sans retirer le web du service.
Utilisez health pour les sondes fréquentes et ready avant d’envoyer du trafic vers une version. Alertez sur readiness non-200 et sur la croissance des jobs échoués. Gardez les payloads rétrocompatibles.