Publié initialement le 25 octobre 2019
D’après les commentaires de notre publication récente Annonce de journalisation du taux d’API voici un article de suivi contenant une série de questions que nous avons couramment reçues de clients et de partenaires. Notez qu’au fur et à mesure que nous recevrons plus de questions et plus de réponses, nous mettrons à jour le contenu de cet article.
Q. À quel niveau la limitation de débit de l’API sera-t-elle appliquée ? Est-ce par instance ? Par organisation ? Par application API ?
Un. Nous appliquerons la limitation de débit API à l' niveau de l’application API niveau. Pour plus de clarté, une application API se rapporte à chaque application créée et maintenue dans une organisation Brightspace Outil de gestion de l’extensibilité. Chaque application de gestion de l’extensibilité activée dans un site Brightspace se verra attribuer son propre compartiment cloisonné de crédits d’API.
Q. Quelle sera la taille du compartiment de limitation de débit de l’API ?
Un. La taille du seau de limite de débit est 50 000 crédits d’API par minute. Veuillez noter que nous incluons les éléments suivants dans chaque en-tête de réponse de l’API :
X-Rate-Limit-Remaining - cette valeur fournit au développeur le nombre restant de crédits disponibles dans le délai imparti. REMARQUE : cette valeur ne sera significative que sur les sites où la limitation de débit de l'API est activée.
Q. Allez-vous publier les coûts des jetons par itinéraire d’API ?
R. Depuis le 3 décembre 2019, les coûts des jetons d’itinéraire sont fixés à 10 crédits par appel d’API.
En surveillant et en analysant les journaux d’utilisation des API, nous serons en mesure de mieux comprendre les coûts réels du serveur de nos itinéraires d’API. Par conséquent, nous souhaitons nous réserver le droit de modifier les coûts des jetons d’itinéraire d’API. Nous prévoyons pleinement que les coûts des itinéraires d’API vont changer avant le lancement complet du produit en mai 2020.
Nous incluons les éléments suivants dans chaque en-tête de réponse de l’API :
X-Request-Cost - cette valeur informe le développeur du nombre de crédits coûtant pour l’itinéraire de l’API. À l’heure actuelle, cette valeur sera toujours 10.
Q. Y aura-t-il un moyen de savoir si l’une de mes applications a dépassé la limite de débit de l’API (un message 429) ?
R. Oui. Ces données seront disponibles via le Brightspace Journal système. Ces données seront conservées dans le journal système en fonction des règles de conservation des données actuelles. Recherchez «L’itinéraire a atteint une limite de taux» pour trouver les événements de limitation de débit (messages 429).
Q. Y aura-t-il un moyen de savoir si l’une de mes applications a déclenché un journal des limites d’API ?
R. Oui. À partir de notre sortie de produit de décembre, ces données seront disponibles via le Brightspace Journal système. Ces données seront conservées dans le journal système en fonction des règles de conservation des données actuelles. Recherchez « L’itinéraire a atteint une limite de journal » pour trouver les enregistrements de journal de limite de débit. Pour les systèmes ayant la limitation de débit de l’API activée, recherchez dans votre journal système « L’itinéraire a atteint une limite excessive » pour identifier les événements de limite de débit (erreurs 429).
Q. La limitation de débit de l’API inclura-t-elle les appels aux services LTI ?
R. Oui. Tous les appels de service LTI Advantage sont soumis à la même limitation de débit que nos APIs Brightspace Learning Framework.
Q. Y aura-t-il des indicateurs disponibles pour informer un développeur qu’il est sur le point d’utiliser son compartiment de limite de débit d’API ?
R. Oui. L' X-Rate-Limit-Remaining informe un développeur sur le nombre de crédits qu’il lui reste à utiliser dans la minute actuelle.
Q. Y aura-t-il un moyen de savoir combien de temps il reste avant que mon compartiment de crédits d’API soit rempli à nouveau ?
R. Oui. Nous incluons le champ suivant dans notre en-tête de réponse :
X-Rate-Limit-Reset - cette valeur fournit à un développeur le temps, en secondes, jusqu’à ce que son compartiment se réinitialise.
Q. Je viens de recevoir un message 429. Comment saurai-je combien de temps je dois attendre jusqu’à ce que mon compartiment de crédits d’API soit rempli à nouveau ?
R. Pour les réponses 429, nous incluons une valeur d’en-tête de réponse standard de l’industrie :
Réessayer-Après - cette valeur fournit à un développeur le temps, en secondes, jusqu’à ce que son compartiment se réinitialise.
Q. Sera-t-il possible d’acheter des crédits supplémentaires ou un compartiment de crédits plus grand ?
R. Non. Nous croyons que le montant des crédits disponibles par minute reflète un montant d’utilisation acceptable.
Q. Je crains que mon application ne dépasse les limites fournies et que mon code ne soit pas prêt à gérer les messages 429. Que puis-je faire ?
Un. Avec notre annonce initiale en octobre 2019, chez D2L, nous pensons que nous avons fourni une quantité importante de temps de préparation aux clients. Nous encourageons tous les clients à travailler avec votre D2L TAM et/ou CSM pour se préparer à ce changement. Chez D2L, nous sommes plus qu’heureux de nous engager avec vous sur la façon dont la limitation de débit API peut avoir un impact sur le code existant que vous avez écrit.
Notre objectif pour cette initiative est de maintenir la performance et la stabilité de votre investissement Dans l’espace lumineux. Nous avons construit la solution de manière à pouvoir gérer les exemptions là où c’est nécessaire, mais nous voulons éviter d’accorder ces exceptions autant que possible. Si vous croyez que vous avez besoin d’une exemption, veuillez contacter votre CSM D2L et / ou TAM afin que nous puissions travailler ensemble pour décider d’une voie à suivre mutuellement acceptable.
Q. Les appels d’API infructueux (par exemple, 400, 403, 404) coûtent-ils des crédits à mon application ?
R. Oui. La logique de limitation de débit se produit avant que nous traitons l’appel d’API. Au moment où nous recevons l’appel, nous ne savons pas s’il sera réussi ou non.