2010-11-03 2 views
1

J'essaie de compter le nombre d'entités dans ma base de données créées entre certaines dates.Django + AppEngine comptant plus les 1000 enregistrements

Je sais que google a supprimé la limitation sur l'extraction de plus de 1000 résultats par requête, mais chaque fois que j'essaie d'utiliser l'API distante, je n'obtiens que 1000 résultats.

Est-ce que quelqu'un sait comment je peux compter plus de 1000 entités afin de vérifier combien d'entités j'ai?

Merci.
Netanel

Répondre

3

La limitation a été supprimée dans les versions plus récentes du SDK. Vous pouvez donc vérifier et mettre à niveau. Ceci ne résoudra toujours pas complètement votre problème, mais ... le problème est que les requêtes de compte GAE sont une très mauvaise idée - parce que ce n'est pas une table (c'est plus un tableau distribué) quand vous faites un compte il doit réellement frapper (et peut-être aller chercher, je ne suis pas sûr) chaque chacun des objets qui correspondent à votre requête. C'est une opération très coûteuse, donc si vous le faites beaucoup vous utilisez des ressources inutilement. Si vous avez suffisamment d'objets, vous pouvez même atteindre la limite de 30 secondes. Jetez un oeil à d'autres façons plus évolutives de le faire, comme une carte réduire (compter et stocker le compte pour les minutes, puis chaque heure, puis le jour, puis la semaine, puis le mois, etc.) ou sharded counter.

1
Model.gql("WHERE creation_date >= :start_date AND creation_date <= :end_date", 
      start_date=startdate, end_date=enddate).count() 

devrait retourner combien d'entités correspond à votre requête, même si vous avez plus de 1000.

Vous utilisez au moins v1.3.6 du SDK, car c'est là la limite de comptage a été éliminé?

Questions connexes