4

Le code ci-dessous appelle l'API Google Analytics Reporting à l'aide de la version du client nodejs de Google 0.7here. Il renvoie une erreur socket hang up sur certaines exécutions mais pas toujours. Serait-ce des erreurs sur la fin des serveurs de Google? Existe-t-il un moyen facile de déboguer? BTW Je fais plusieurs appels consécutifs, pas sûr si cela est causé par les limites de taux.Erreur "raccrochage du socket" lors de l'appel de l'API Google via le client de noeud

gapi = require "googleapis" 
authClient = new gapi.auth.JWT(
    config.ga.clientEmail, 
    config.ga.privateKeyPath, 
    null, 
    [config.ga.scopeUri] 
) 

authPromise = new Promise (resolve, reject) -> 
    authClient.authorize (err, token) -> 
     resolve token 
    return 
    return 

authPromise.then -> 
    gapi.discover('analytics', 'v3') 
    .withAuthClient(authClient) 
    .execute (err, client) -> 
     ... 

Répondre

1

L'erreur fait surface après avoir obtenu avec succès le client puis en cours d'exécution: client.analytics.data.ga.get(queryObj).execute (err, result) -> ....

Ryan Seys, un contributeur sur le client de l'API, a suggéré here que .discover devrait être appelé une fois et le résultat client devrait réutiliser. J'appelais .discover des centaines de fois consécutives et créant un tas de nouveaux client s. Le serveur n'a probablement pas aimé ça. En stockant et en réutilisant le client, le problème a disparu. Code de travail pour la prospérité:

gapi = require "googleapis" 
authClient = new gapi.auth.JWT(
    config.ga.clientEmail, 
    config.ga.privateKeyPath, 
    null, 
    [config.ga.scopeUri] 
) 

authPromise = new Promise (resolve, reject) -> 
    authClient.authorize (err, token) -> 
    gapi.discover('analytics', 'v3').withAuthClient(authClient).execute (err, client) -> 
     resolve client 
     return 
    return 
    return 

authPromise.then (client) -> 
    client.analytics.data.ga.get(queryObj).execute (err, result) -> 
Questions connexes