Aller au contenu

Faire tourner un worker en fond avec BullMQ, Celery ou Sidekiq, depuis votre agent IA

Les envois d’e-mails, les exports et les traitements lourds n’ont rien à faire dans vos requêtes. Branché à while par MCP, votre agent IA met en ligne le worker qui les fait en fond, avec sa file d’attente.

Par Aloïs Oddon, cofondateur de Nextmap. Faits relevés le 2 novembre 2026.

Voir en Markdown

Prérequis

  • Une appli qui pose des tâches dans une file : BullMQ, Celery, RQ ou Sidekiq.
  • Un agent IA qui travaille dans un terminal : Claude Code, Codex, Cursor ou Gemini CLI.

Étape 1 : Donnez ces instructions à votre agent

Ouvrez votre agent dans le dossier de votre appli, et collez-lui ces instructions :

Instructions
Connecte-toi à while avec mon compte (while.sh/agents), puis mets mon appli en ligne.

Votre agent ajoute lui-même le serveur MCP de while. S’il vous le demande, relancez-le. Au premier appel à while, une page s’ouvre dans votre navigateur. Dans Claude Code, si elle ne s’ouvre pas, tapez /mcp, choisissez while, puis Authenticate. Sur cette page, choisissez « Une nouvelle appli », puis cliquez sur Autoriser.

Étape 2 : Ouvrez votre appli

Votre agent vous donne l’adresse de votre appli, par exemple https://mon-appli.while.cloud, en HTTPS.

Ce que fait votre agent

Il ajoute le worker et sa file à while.yaml :

while.yaml
apiVersion: while/v1
project: mon-appli
services:
  - name: web
    port: 3000
  - name: worker
    type: worker
    command: [node, worker.js]
caches:
  - name: file
    durable: true

Le worker tourne sans arrêt, sans adresse publique, avec le même code que votre appli. Sa file vit dans un cache compatible Redis, durable : rien ne se perd au redémarrage. Son adresse, mot de passe compris, arrive dans REDIS_URL, comme dans ce worker BullMQ1 :

worker.js
import { Worker } from 'bullmq';
import IORedis from 'ioredis';

const connection = new IORedis(process.env.REDIS_URL, { maxRetriesPerRequest: null });

new Worker('emails', async (job) => {
  await envoyerEmail(job.data);
}, { connection });

Lancer un worker Celery

Vous, à votre agent : Ajoute un worker Celery pour les exports.

Votre agent déclare le worker avec la commande celery -A monappli worker, branché sur le même cache : il donne REDIS_URL à Celery, avec broker=os.environ['REDIS_URL'].

Voir ce que fait votre worker

Vous, à votre agent : Pourquoi les e-mails partent en retard ?

Votre agent lit les journaux du worker dans while, repère la tâche qui bloque et corrige.

Ajouter de la mémoire

Vous, à votre agent : Donne plus de mémoire au worker des exports.

Votre agent change resources dans while.yaml, et le worker repart avec, à la mise en ligne suivante.

Revenir à la version d’avant

Vous, à votre agent : Reviens à la version d’avant du worker.

La version d’avant du worker reprend en quelques secondes. Votre agent lit l’erreur dans les journaux, corrige et remet en ligne.

Dans la doc : Workers, Cache Valkey (Redis), Tâches planifiées et Versions et retour arrière.

Prochaines étapes

Sources

  1. BullMQ, les workers, consulté le 2 novembre 2026

Questions

Mon worker tourne-t-il en double pendant une mise à jour ?

Non : une nouvelle version remplace l’ancienne sans jamais tourner en double.

Celery, RQ ou Sidekiq ?

Tous : le worker lance la commande de votre choix, avec le même code que votre appli.

Et pour un travail à heure fixe ?

Une tâche planifiée coûte moins : elle ne tourne que le temps du travail.

Mon worker a-t-il une adresse publique ?

Non, il tourne sans adresse : personne ne peut l’appeler de l’extérieur.

Branchez votre agent, il s’occupe du reste

À coller dans votre agent

Lis while.sh/agents, puis mets mon appli en ligne avec while.

Copier les instructions

Pas besoin de compte pour essayer : votre appli est en ligne tout de suite. Pour la garder, connectez-vous.

Un projet pour votre entreprise ? Parlez à l’équipe : hello@while.sh