Api Facebook: (#4) limite de demande atteinte

depuis fin novembre, nous atteignons la limite d'application sur L'API Facebook. Nous récupérons les photos de l'utilisateur, et sélectionné 25 amis photos → ceci est fait quand un utilisateur signe dans (nous sommes en train de construire des albums pour les utilisateurs).

l'action ci-dessus est limitée, mais elle n'a pas été limitée jusqu'à fin novembre. Nous utilisons des appels de lots pour obtenir des photos des albums - est-il une meilleure façon d'obtenir cette info sans être limité?

BTW, selon Facebook nous faisons 1M appels par jour, mais d'après nos calculs, nous effectuons 180 000 appels par jour.

aller chercher seulement les photos de l'utilisateur sans les photos de son ami n'est pas une solution pour nous.

28
demandé sur bastelflp 2012-12-30 21:42:57

2 réponses

Le Facebook API limite n'est pas vraiment documenté, mais apparemment, c'est quelque chose comme: 600 appels par 600 secondes, par jeton & par IP. Comme le site est restreint, citant la partie pertinente:

après quelques tests et discussions avec L'équipe de la plateforme Facebook, il n'y a pas de limite officielle que je connaisse ou que je puisse trouver dans la documentation. Cependant, j'ai trouvé 600 appels par 600 secondes, par token et par IP à propos de l'endroit où ils vous arrêtent. J'ai aussi vu certains taux basé sur l'application limitant, mais n'ont pas de nombres.

en règle générale, un appel par seconde ne devrait pas être limité. À première vue, cela semble très restrictif, mais rappelez-vous que vous pouvez grouper certains appels et utiliser l'API d'abonnement pour obtenir des modifications.

comme vous pouvez accéder à L'API graphique du côté client via le SDK Javascript; je pense que si vous voyagez pour votre demande de photos du client, vous ne frapperez pas application limit comme c'est le utilisateur (chacun avec un id unique) qui va chercher des données, pas votre serveur d'application (ID unique).

Cela peut signifier une énorme refactoriser si tout ce que vous faites passer par un serveur. Mais cela semble être la meilleure solution si vous avez autant de requêtes (car cela donnera un souffle à votre serveur).

Sinon, vous pouvez essayer batch demande, mais je suppose que vous allez déjà de ce côté si vous avez beaucoup de trafic.


Si rien de tout cela fonctionne, selon Politique De La Plateforme Facebook vous devriez le contacter.

si vous dépassez, ou prévoyez de dépasser, l'un des seuils suivants s'il vous plaît contactez-nous comme vous pouvez être soumis à des conditions supplémentaires: (>5M MAU) ou (>100m appels API par jour) ou (>50m impressions par jour).

24
répondu Simon Boudrias 2014-09-11 11:57:40

Facebook "Graph API Rate Limiting" docs dit qu'une erreur avec le code #4 est un limite de taux du niveau app, qui est différent de limites de taux au niveau de l'utilisateur. Bien qu'il ne donne pas de nombres exacts, il décrit leur niveau app rate-limit comme:

Cette limitation s'applique globalement au niveau application. Les appels api publicitaires sont exclus.

  • la limitation de vitesse se produit en temps réel sur la fenêtre coulissante pour passé une heure.
  • les statistiques sont collectées pour le nombre d'appels et de requêtes effectués, le temps cpu passé, la mémoire utilisée pour chaque application.
  • Il y a une limite pour chaque ressource multipliée par d'utilisateurs mensuels actifs d'une application donnée.
  • Lorsque l'application utilise plus de ses ressources, l'erreur est levée.
  • Erreur, Code: 4 Message: demande d'Application de la limite atteint

les documents contiennent également des recommandations pour en évitant les limites de fréquence. Pour l'application des limites, ils sont:

Recommandations:

  • Vérifier le code d'erreur (4) pour confirmer le type d'étranglement.
  • ne faites pas de vagues d'appels, étalez les appels tout au long de la journée.
  • effectuer une récupération intelligente des données (données importantes, données non dupliquées, etc.).
    • aperçus en temps réel, assurez-vous que les appels D'API sont structurés de manière à ce que vous puissiez lire des aperçus pour autant de fois que Les messages de Page que possible, avec le nombre minimum de demandes.
    • Ne pas aller chercher les utilisateurs de l'alimentation, deux fois (dans le cas de deux utilisateurs de l'Application ont un ami en commun)
    • ne cherchez pas tous les amis de l'utilisateur se nourrissent dans une rangée si le nombre d'amis est plus de 250. Séparer le lit sur des jours différents. En option, récupérez d'abord le flux de nouvelles de l'utilisateur de l'application (me/home) afin de détecter quels amis sont les plus importants pour l'utilisateur de l'application. Ensuite, récupérez les amis des flux premier.
  • Envisager de limiter/filtrer les demandes en utilisant les paramètres suivants: "depuis", "jusqu'à ce que", "limite"
  • pour les appels liés à la page, utilisez les mises à jour en temps réel pour vous abonner aux changements de données.
  • L'extension de champ permet de "joindre" des requêtes graphiques multiples en un seul appel.
  • Etags pour vérifier si l'interrogation des données a changé depuis la dernière vérification.
  • Pour la page de gestion de développeurs qui n'ont pas énorme base d'utilisateurs, ont les admins de la page d'accepter l'application d'augmenter le nombre d'utilisateurs.

enfin, les docs donnent les conseils d'information suivants:

  • la mise en lots d'appels ne réduira pas le nombre d'appels api.
  • faire des appels parallèles ne réduira pas le nombre d'appels api.
9
répondu Jesse Webb 2014-10-24 14:49:03