web-dev-qa-db-fra.com

Comment augmenter les limitations de quota de l'API Google Sheets v4

La nouvelle API Google Sheets v4 dispose actuellement d'un quota de lecture/écriture illimité par jour (ce qui est fantastique), mais limité à 500 lectures/écritures par compte par 100 secondes, et 100 lectures/écritures par clé par 100 secondes (ou, j'ai trouvé, plusieurs clés provenant de la même IP). C'est probablement suffisant pour la plupart des cas d'utilisation, mais j'ai un cas Edge qui nécessite d'apporter une feuille Google fréquemment mise à jour avec 70 onglets vers le bas à un serveur node.js qui les distribue aux clients des utilisateurs toutes les ~ 30-60 secondes environ (utilisateurs sont des annotateurs de données qui sont des étudiants assistants de recherche). Ce n'était pas si mal au début du projet quand il n'y avait que 20 à 30 onglets, mais maintenant que les données sont volumineuses, le serveur souffle sur le quota de 100 et renvoie des erreurs toutes les 10 à 15 minutes.

Le problème est tel que:

  1. Mises à jour fréquentes des données: seules les données de 1 à 5 des 70 onglets sont susceptibles d'être mises à jour à une minute donnée, mais les onglets contenant de nouvelles données sont aléatoires (je tire donc toute la feuille de 70 = 70 lectures).
  2. Intervalle de mise à jour: Le besoin de mises à jour se produit au hasard à des intervalles d'environ 30 secondes à 5 minutes (donc certains dans le quota, certains environ 3 à 5 fois le quota).
  3. Limitation: j'ai essayé de limiter la mise à jour dans les 100 appels/100 secondes (ma solution précédente), mais cela introduit de gros problèmes de convivialité, ce qui diminue considérablement la convivialité/la productivité/la qualité du travail.
  4. Augmentation du quota: l'API des feuilles ne semble pas actuellement inclure un moyen de payer pour augmenter le quota. Cela permet de remplir un formulaire pour demander une augmentation du quota, mais je ne sais pas quel est le temps de réponse moyen à ce sujet (ma demande n'a que quelques jours).
  5. Comptes de service multiples: j'ai essayé d'utiliser plusieurs comptes de service pour obtenir le quota complet de 500 demandes/100 secondes (plutôt que le quota par utilisateur), car il s'agit d'un serveur, mais Google Sheets cherche à limiter le taux à 100 demandes/100 secondes d'une IP donnée
  6. Alternatives: J'ai considéré que ce projet venait peut-être de dépasser la taille que Sheets est facilement capable de gérer, mais il ne semble pas y avoir de bonnes feuilles de calcul collaboratives auto-hébergées avec des API faciles à interfacer. là-bas.

Y a-t-il des paramètres/méthodes suggérés pour atteindre les 500 appels/100 secondes pour un serveur?

15
Peter Jansen

Vous pouvez demander une mise à jour des quotas dans Google Cloud Platform et elle sera augmentée à 2500 par compte et 500 par utilisateur. (à propos de votre # 4) enter image description here

6
Alex
  1. Vous pouvez utiliser spreadsheets.get pour lire la feuille de calcul entière en un seul appel, plutôt que 1 appel par demande. Alternativement, vous pouvez utiliser spreadsheets.values.batchGet pour lire plusieurs plages différentes en un seul appel, si tout ce dont vous avez besoin sont les valeurs.

  2. L'API Drive propose " notifications push ", vous pouvez donc être averti lorsque des modifications se produisent et réagir à celles-ci, au lieu de les interroger. La latence des notifications est un peu lente, mais elle fait le travail.

4
Sam Berlin