Mettre à jour le statut d'une tâche
4 min
Vue d'ensemble
La mise à jour du statut d'une tâche se fait par l'envoi d'un message au processus parent.
Envoi du message
La communication avec le processus parent se fait via la fonction suivante :
process.send(args)Le type du paramètre args est :
{ action: 'cancel' | 'complete' | 'update'; error?: unknown; metadata?: object }Effets de la mise à jour
La modification du statut d’une tâche entraîne automatiquement :
- l’enregistrement d’une nouvelle entrée pour la tâche en base de données ;
- la notification de toutes les souscriptions GraphQL associées à cette tâche.
Exemple
import { logger } from '../server/logger.mjs';
const run = async ({ taskName, metadata }) => {
logger.info(`Running task ${taskName} with ${JSON.stringify(metadata)}`);
/////////
// Step 1
/////////
// Update task state: step 1 has started
process.send({ action: 'update', metadata: { status: 'step_1_started' } });
// [...]
// Update task state: step 1 has completed
process.send({ action: 'update', metadata: { status: 'step_1_completed' } });
/////////
/////////
// Step 2
/////////
// Update task state: step 2 has started
process.send({ action: 'update', metadata: { status: 'step_2_started' } });
// [...]
// Update task state: step 2 has completed
process.send({ action: 'update', metadata: { status: 'step_2_completed' } });
/////////
/////////
// Step 3
/////////
// Update task state: the task is done
process.send({ action: 'complete', metadata: { status: 'completed' } });
};
process.on('message', (args) => {
run(args);
});