> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Perte de données de trace dans les processus worker

Weave téléverse les données de trace dans des threads d'arrière-plan afin de limiter l'impact sur les performances de votre application. Vous risquez toutefois de perdre des données de trace si vous utilisez un système de multiprocessing ou de file d'attente de tâches, ou un processus worker comme Celery. Cela se produit lorsque le processus worker se termine avant que les threads d'arrière-plan aient fini de téléverser les traces.

Pour éviter toute perte de données dans les processus worker, assurez-vous que les téléversements en arrière-plan sont terminés en appelant `client.flush()` ou `client.finish()` avant la fin de la tâche du worker. C'est particulièrement utile dans les environnements éphémères comme [AWS Lambda](https://aws.amazon.com/lambda/), [Google Cloud Run](https://cloud.google.com/run) ou les notebooks qui se ferment juste après l'exécution.

Ces méthodes répondent à des besoins différents ; choisissez celle qui convient à votre environnement :

* `weave.flush()` : effectue un vidage silencieux. Recommandée lorsque Weave est intégré à des processus worker ou à des environnements d'intégration continue (CI).
* `weave.finish()` : affiche la progression à l'aide d'une barre de progression ou de callbacks de statut. Recommandée pour les scripts interactifs ou les notebooks.

Les deux méthodes sont bloquantes jusqu'à ce que tous les téléversements en arrière-plan soient terminés, ce qui garantit qu'aucune donnée de trace n'est perdue à l'arrêt du processus worker.

L'exemple suivant montre comment appeler `client.finish()` depuis une tâche Celery afin de vider les traces avant que le worker ne rende la main. Remplacez `[TEAM-NAME]` par le nom de votre équipe W\&B et `[PROJECT-NAME]` par le nom de votre projet W\&B :

```python theme={"system"}
from celery import Celery
import weave

app = Celery('tasks')

@app.task
def process_task(input_data):
    weave.init("[TEAM-NAME]/[PROJECT-NAME]")

    try:
        # Logique de votre tâche, qui génère des traces
        result = your_processing_function(input_data)

        # S'assurer que toutes les traces sont téléversées avant la fin de la tâche
        weave.finish()

        return result
    finally:
        pass
```

Vous pouvez également utiliser le gestionnaire de contexte `with` pour appeler `weave.finish()` automatiquement à la sortie du bloc :

```python theme={"system"}
with weave.init("[TEAM-NAME]/[PROJECT-NAME]") as client:
    result = your_processing_function(input_data)

    return result
```

Vous pouvez également améliorer les performances de votre application avec `weave.flush()`. Pour plus d'informations, voir [Vidage](/fr/support/weave/articles/long-eval-clean-up-times).

Pour mieux vous prémunir contre la perte de données, envisagez d'activer le [journal à écriture anticipée](/fr/products/wandb/weave/guides/tracking/write-ahead-log), qui écrit les données de trace sur le disque avant de les envoyer au serveur.

***

<Badge stroke shape="pill" color="blue" size="md">[Données de trace](/fr/support/weave/tags/trace-data)</Badge><Badge stroke shape="pill" color="blue" size="md">[Performances](/fr/support/weave/tags/performance)</Badge>
