AppEngine: как работают курсоры? - PullRequest
0 голосов
/ 04 апреля 2010

у меня есть следующий код

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)

Я не знаю, что я делаю неправильно, но я получаю тот же курсор, но это не тот эффект, который я хотел. почему курсор не двигается?

1 Ответ

5 голосов
/ 04 апреля 2010

Вы неправильно используете memcache.add, что задокументировано здесь как:

Устанавливает значение ключа, если и только если элемент еще не находится в memcache.

То есть вы никогда не сохраняете курсор , отличный от первого. Вместо этого используйте memcache.set, что

Устанавливает значение ключа независимо от предыдущее содержимое в кеше.

Обратите внимание, что это не имеет ничего общего с курсорами - все дело в правильном использовании memcache!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...