Получить случайную сущность из хранилища данных - PullRequest
4 голосов
/ 12 сентября 2010

Довольно просто, в моем приложении AppEngine у ​​меня есть более 1 миллиона сущностей одного вида, каков наилучший способ выбрать одну наугад?

Ответы [ 2 ]

0 голосов
/ 12 сентября 2010
0 голосов
/ 12 сентября 2010

Может быть, одно решение, но я не знаю, будет ли оно лучшим :)

import random
from google.appengine.ext import db
from google.appengine.api import memcache

DATA_KEY = "models/keys/random"

def get_data():
    data = memcache.get (DATA_KEY)
    if data is None:
        offset = random.randint (1, 1000000)
        data  = self.MyModel.all (keys_only=True).fetch (100, offset)
        memcache.add (DATA_KEY, data, 60)

    entity_key = random.choice (data)
    return db.get (entity_key)
...