2010-04-04 58 views
0

我有以下代碼AppEngine:遊標如何工作?

def get(self): 
    date = datetime.date.today() 
    loc_query = Location.all() 

    last_cursor = memcache.get('location_cursor') 
    if last_cursor: loc_query.with_cursor(last_cursor) 
    loc_result = loc_query.fetch(1) 

    for loc in loc_result: 
     self.record(loc, date) 
     taskqueue.add(
      url='/task/query/simplegeo', 
      params={'date':date, 'locid':loc.key().id()} 
     ) 

    if len(loc_result): 
     memcache.add('location_cursor', loc_query.cursor()) 
     taskqueue.add(url='/task/count/', method='GET') 
    else: 
     memcache.add('location_cursor', None) 

我不知道我做錯了什麼,但我得到相同的光標這是不是我想要的效果。爲什麼光標沒有移動?

回答

5

你濫用memcache.add,這是記錄here爲:

設置鍵的值,當且僅當該 產品尚未在內存緩存。

所以你從來沒有存儲任何光標不同從第一個。在高速緩存中使用memcache.set來代替,該

設置鍵的值,無論 以前的內容。

請注意,這與遊標無關 - 這完全是關於正確使用memcache