Depuis fin novembre, nous atteignons la limite d'applications de l'API Facebook. Nous allons chercher les photos de l'utilisateur et avons sélectionné 25 photos d'amis → cette opération est effectuée lorsqu'un utilisateur signe sa signature (nous créons des albums pour les utilisateurs).
L’action ci-dessus est limitée, mais elle ne l’a été jusqu’à la fin du mois de novembre. Nous utilisons des appels par lots pour obtenir des photos d'albums. Existe-t-il un meilleur moyen d'obtenir ces informations sans être limité?
BTW, selon Facebook, nous traitons 1 million d'appels par jour, mais selon notre compte, nous effectuons 180 000 appels par jour.
Extraire uniquement les photos de l'utilisateur sans les photos de son ami n'est pas une solution pour nous.
La limite de l'API Facebook n'est pas vraiment documentée, mais apparemment, c'est quelque chose comme: 600 appels par 600 secondes, par jeton et par IP . Comme le site est restreint, citez la partie pertinente:
Après quelques tests et discussions avec l'équipe de la plate-forme Facebook, il n'y a pas de limite officielle à ma connaissance ou que je peux trouver dans la documentation. Cependant, j'ai trouvé 600 appels par 600 secondes, par jeton et par IP, à peu près au même endroit où ils vous arrêtent. J'ai également constaté certaines limitations de débit basées sur les applications, mais je n'ai pas de chiffres.
En règle générale, un appel par seconde ne devrait pas être limité en débit. En apparence, cela semble très restrictif, mais souvenez-vous que vous pouvez regrouper certains appels et utiliser l’API d’abonnement pour obtenir les modifications.
Comme vous pouvez accéder à l'API Graph côté client via le SDK Javascript; Je pense que si vous parcourez votre demande de photos du client, vous ne frappez pas de application limit
car c'est l'utilisateur (chacun avec un identifiant unique) qui récupère les données, pas votre serveur d'applications (identifiant unique).
Cela peut signifier un énorme refactor si tout ce que vous faites passe par un serveur. Mais cela semble être la meilleure solution si vous avez autant de demandes (car cela donnera un souffle à votre serveur).
Sinon, vous pouvez essayer demande batch
, mais je suppose que vous y allez déjà si vous avez un trafic important.
Si rien de tout cela ne fonctionne, selon le Politique de la plate-forme Facebook , vous devriez les contacter.
Si vous dépassez, ou prévoyez de dépasser, l'un des seuils suivants, veuillez nous contacter car vous pourriez être soumis à des conditions supplémentaires: (> 5 M MAU) ou (> 100 M appels API par jour) ou (> 50 M impressions par jour).
La docs Facebook "limitation de la vitesse du graph API" indique qu'une erreur liée au code #4
est un limite de débit au niveau de l'application , ce qui est différent de tilisateur limites du taux de nivea . Bien qu'il ne donne pas de chiffres exacts, il décrit leur limite de débit au niveau de l'application comme suit:
Cette limitation de taux est appliquée globalement au niveau de l'application. Les appels api d'annonces sont exclus.
- La limitation du débit s’effectue en temps réel sur une fenêtre glissante pendant une heure.
- Les statistiques sont collectées pour le nombre d'appels et de requêtes effectués, le temps passé par l'unité centrale de traitement, la mémoire utilisée pour chaque application.
- Il existe une limite pour chaque ressource multipliée par les utilisateurs actifs mensuels d'une application donnée.
- Lorsque l'application utilise plus que ses ressources autorisées, l'erreur est renvoyée.
- Erreur, Code: 4, Message: Limite de demande d'application atteinte
La documentation donne également des recommandations pour éviter les limites de taux. Pour les limites de niveau d'application, elles sont:
Recommandations:
- Vérifiez le code d'erreur (4) pour confirmer le type de limitation.
- Ne faites pas des appels en rafale, étalez les appels tout au long de la journée.
- Effectuez une récupération intelligente des données (données importantes, données non dupliquées, etc.).
- Grâce aux informations en temps réel, assurez-vous que les appels d'API sont structurés de manière à pouvoir lire des informations pour autant de publications de page que possible, avec un nombre minimal de demandes.
- Ne récupérez pas l'alimentation des utilisateurs deux fois (dans le cas où deux utilisateurs de l'application ont un ami spécifique en commun)
- Ne récupérez pas le flux d'amis de tous les utilisateurs dans une rangée si le nombre d'amis est supérieur à 250. Séparez les extractions sur des jours différents. En option, commencez par consulter le fil de nouvelles de l'utilisateur de l'application (moi/domicile) afin de détecter les amis les plus importants pour l'utilisateur de l'application. Ensuite, commencez par chercher ces amis.
- Envisagez de limiter/filtrer les demandes en utilisant les paramètres suivants: "depuis", "jusqu'à", "limite"
- Pour les appels liés aux pages, utilisez les mises à jour en temps réel pour vous abonner aux modifications de données.
- L’expansion du champ permet de "joindre" plusieurs requêtes de graphes en un seul appel.
- Etags pour vérifier si l'interrogation des données a changé depuis la dernière vérification.
- Pour les développeurs de gestion de pages n'ayant pas une base d'utilisateurs importante, demandez aux administrateurs de la page d'accepter l'application pour augmenter le nombre d'utilisateurs.
Enfin, la documentation donne les conseils d’information suivants:
- Les appels en lot ne réduiront pas le nombre d'appels d'api.
- Faire des appels en parallèle ne réduira pas le nombre d'appels d'API.