2010-09-12 54 views
3

非常簡單,在我的AppEngine應用程序中,我有超過一百萬種一種實體,那麼隨機選擇一個實體的最佳方法是什麼?從數據存儲中獲取一個隨機實體

+0

可能重複[如何獲得數據存儲在隨機的東西( AppEngine)?](http://stackoverflow.com/questions/3450926/how-to-get-something-random-in-datastore-appengine) – 2010-09-12 18:00:21

+0

[從Google App Engine數據存儲中獲取隨機記錄?]的可能重複(http://stackoverflow.com/questions/3002999/fetching-a-ra ndom-record-from-google-app-engine-datastore) – 2010-09-13 10:21:18

回答

-1

也許一個解決方案,但我不知道這是否是最好的:)

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) 
+1

隨着偏移大小的增加,獲取時間將會增加。幾乎所有使用此代碼的請求都應該會出現DeadlineExceeded異常。 – geoffspear 2010-09-12 13:02:09

相關問題