• /
  • EnglishEspañolFrançais日本語한국어Português
  • Se connecterDémarrer

Cette traduction automatique est fournie pour votre commodité.

En cas d'incohérence entre la version anglaise et la version traduite, la version anglaise prévaudra. Veuillez visiter cette page pour plus d'informations.

Créer un problème

Tutoriel NerdGraph : Exécuter une requête NRQL de manière asynchrone

Vous pouvez utiliser NerdGraph pour exécuter une requête NRQL . De plus, vous pouvez également utiliser NerdGraph pour exécuter une requête NRQL asynchrone. Les requêtes asynchrones s'exécutent en arrière-plan et vous pouvez effectuer requests de suivi pour récupérer les résultats de la requête ou l'état de la requête. Ce type de requête évite qu'une requête soit interrompue par des problèmes tels que des délais d'expiration du navigateur ou des délais d'expiration de connexion HTTP. C'est particulièrement utile pour exécuter des requêtes dont l'exécution peut prendre beaucoup de temps.

Exigences

Si vous disposez de Data Plus, vous pouvez exécuter une requête asynchrone d'une durée maximale de 10 minutes en utilisant NerdGraph ou l'UI du générateur de requêtes.

Pour en savoir plus sur les limites des requêtes, consultez Limites des requêtes.

Exemple de requête asynchrone

Voici un exemple d'appel de requête asynchrone NerdGraph. Le async: true est ce qui rend la requête asynchrone. Cette requête renverra des résultats si elle se termine dans le délai d'expiration par défaut de 5 secondes ; sinon, elle renverra des données queryProgress à utiliser dans la requête de suivi dans le champ nrqlQueryProgress .

{
actor {
account(id: YOUR_ACCOUNT_ID) {
nrql(query: "SELECT * FROM Transaction", async: true) {
results
queryProgress {
queryId
completed
retryAfter
retryDeadline
resultExpiration
}
}
}
}
}

Obtenir les résultats ou l'état d'une requête asynchrone

Si votre requête dépasse le délai d'expiration par défaut, elle renverra un ID de requête. Vous pouvez prendre cet ID et exécuter une deuxième requête pour obtenir les résultats de la requête, si elle est terminée, ou bien le statut de cette requête.

{
actor {
account(id: YOUR_ACCOUNT_ID) {
nrqlQueryProgress(queryId: "YOUR_QUERY_ID") {
results
queryProgress {
queryId
completed
retryAfter
retryDeadline
resultExpiration
}
}
}
}
}

Quelques détails importants sur cette requête :

  • Le queryId provient des données queryProgress renvoyées par la requête asynchrone d'origine.
  • L'argument account doit correspondre à l'argument account de la requête d'origine.
  • Cette requête renverra des résultats si l'exécution asynchrone est terminée ; sinon, elle renverra queryProgress données.
  • La requête peut être répétée mot pour mot jusqu'à ce que des résultats ou une erreur soient renvoyés.

Annuler une requête asynchrone

Vous pouvez annuler une requête asynchrone en utilisant la mutation nrqlCancelQuery . Cette mutation prend le queryId de la requête que vous souhaitez annuler. Il renverra soit un statut ACCEPTED , soit un statut REJECTED avec une raison de rejet.

mutation {
nrqlCancelQuery(queryId: "YOUR_QUERY_ID") {
queryId
requestStatus
rejectionReason
}
}
Droits d'auteur © 2025 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.