Communitygithub.com

Tâches d'arrière-plan

Gestion de files d'attente de tâches avec BullMQ/Inngest/Trigger.dev, nouvelles tentatives, files d'attente mortes, et contrôle de la concurrence.

Qu'est-ce que Tâches d'arrière-plan ?

Ce skill fournit un guide complet pour implémenter des tâches d'arrière-plan (background jobs) fiables et robustes dans vos applications. Il couvre les meilleures pratiques pour décharger les opérations lentes (emails, traitement d'images, webhooks, rapports, appels IA) vers des files d'attente spécialisées. Les plateformes recommandées sont BullMQ pour les files Redis auto-hébergées, et Inngest ou Trigger.dev pour les solutions serverless/managées. Le skill met l'accent sur l'idempotence des tâches, l'utilisation d'un backoff exponentiel pour les nouvelles tentatives (3-5 tentatives), la mise en place de files d'attente mortes (DLQ) pour les tâches échouées, des limites de concurrence par file, des charges utiles minimales (IDs et références), la séparation des files par priorité, et la surveillance de la profondeur des files et du temps de traitement. Les exemples de code montrent les motifs BullMQ et Inngest. Les anti-patrons à éviter incluent le traitement de tâches lentes dans les gestionnaires de requêtes API, les tâches non-idempotentes, la concurrence illimitée, et le stockage de grandes charges utiles dans les files d'attente.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/YepAPI/skills/tree/HEAD/skills/background-jobs

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait Tâches d'arrière-plan ?

Règles

  • Décharger les travaux lents vers des tâches d'arrière-plan : emails, traitement d'images, webhooks, rapports, appels IA
  • BullMQ pour les files Redis auto-hébergées — Inngest ou Trigger.dev pour les solutions serverless/managées
  • Chaque tâche doit être idempotente — sans danger à réexécuter sans effets secondaires (utiliser des clés d'idempotence)
  • Réessayer avec backoff exponentiel : 3-5 tentatives, délais de 1s, 10s, 60s, 5min
  • File d'attente morte (DLQ) : après le nombre maximal de tentatives, déplacer vers la DLQ pour investigation — ne jamais supprimer silencieusement
  • Définir des limites de concurrence par file — éviter la surcharge des workers (ex. : concurrency: 5)
  • Les charges utiles des tâches doivent être petites : passer des IDs et des références, pas des objets complets
  • Séparer les files par priorité : critical (paiements), default (emails), low (analytique)
  • Surveiller la profondeur de la file et le temps de traitement — alerter en cas d'accumulation dans la file

Motifs

// Motif BullMQ
import { Queue, Worker } from "bullmq";
const queue = new Queue("emails", { connection: redis });

await queue.add("welcome", { userId }, {
  attempts: 3,
  backoff: { type: "exponential", delay: 1000 },
});

const worker = new Worker("emails", async (job) => {
  await sendWelcomeEmail(job.data.userId);
}, { connection: redis, concurrency: 5 });
// Motif Inngest serverless
import { inngest } from "./client";

export const sendEmail = inngest.createFunction(
  { id: "send-welcome-email", retries: 3 },
  { event: "user/created" },
  async ({ event }) => { await sendWelcomeEmail(event.data.userId); }
);

À éviter

  • Traiter les tâches lentes dans les gestionnaires de requêtes API — répondre rapidement, traiter en arrière-plan
  • Tâches non-idempotentes — une exécution en double entraînera des doubles facturations, des doubles emails
  • Concurrence illimitée — épuisera les connexions à la base de données et la mémoire
  • Stocker de grandes charges utiles dans la file d'attente — passer des références à la place

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

YepAPI/skills

WCAG 2.1 AA — semantic HTML, keyboard navigation, screen readers.

YepAPI/skills

Experiment setup, variant splitting, statistical significance, and feature flag integration.

YepAPI/skills

CRUD generators, data tables, user management, role-based access, and bulk operations.

YepAPI/skills

Monitor what ChatGPT and Gemini say about your brand using YepAPI.

YepAPI/skills

Commander.js, interactive prompts with Clack, spinners, colors, config files, exit codes, and npm publishing.

YepAPI/skills

cmdk integration, Cmd+K trigger, fuzzy search, grouped actions, keyboard navigation, and dynamic action registration.

YepAPI/skills

Content planning with trend and sentiment data from YepAPI.

YepAPI/skills

Content calendar, keyword-driven planning, and content briefs.

YepAPI/skills

Theme switching with CSS variables, system preference detection, next-themes, and persistence.

YepAPI/skills

Threaded comments, @mentions, reactions, moderation queue, optimistic UI, and cursor pagination.

YepAPI/skills

Competitive analysis between domains using YepAPI.

YepAPI/skills

Layout grids, KPI cards, data tables with sorting/filtering, sidebar navigation, and responsive breakpoints.

YepAPI/skills

Data encryption — TLS everywhere, AES-256-GCM for PII, bcrypt passwords, encrypted backups.

YepAPI/skills

Chart patterns with Recharts/Nivo/D3, responsive containers, color scales, and accessibility.

YepAPI/skills

Drizzle schema definition, push vs migrate, type-safe queries, relations, transactions, and prepared statements.

YepAPI/skills

Upload handling, resize/compress, CDN delivery, blur placeholders, and next/image patterns.

YepAPI/skills

Local business and Google Maps research using YepAPI.

YepAPI/skills

Cursor-based pagination, IntersectionObserver, virtualized lists with @tanstack/react-virtual, and scroll position restoration.

YepAPI/skills

Tenant isolation (row-level vs schema), subdomain routing, per-tenant config, and data partitioning.

YepAPI/skills

Chat UI components, streaming responses with AI SDK, context window management, and RAG patterns.

Skills associés