Я хочу, чтобы мои идентификаторы были <999999999, но теперь, пытаясь запрограммировать, что это, кажется, имеет противоположный эффект, я только увеличиваю идентификаторы, и когда я пытаюсь выделить идентификаторы start> end?
start, end = User.allocate_ids(max=999999999)
logging.info('start %d' % start)
logging.info('end %d' % end)
lower = start if start < end else end
key = User(id=lower).put()
logging.info('key: '+str(key))
user = key.get()
user.add_auth_id(email)
Мой вывод журнала показывает, что присвоенный идентификатор неверен:
2012-02-13 03:19:07.396 start 98765439124
I 2012-02-13 03:19:07.396 end 98765439123
Как я могу это исправить?
Обновление
Грязный обходной путь, который я в итоге использую, заключается в создании своего рода собственной системы ID, которую я не должен делать, но это было единственное решение в этом случае, и я не думаю, что это приведет к конфликтам или дублированию, оно может быть медленным, если сущности начинают заполняться, но сейчас это выглядит как решение, которое приемлемо работает для пользователя, хотя может показаться, что код выглядит не так хорошо:
new_id = random.randint(1,999999999)
logging.info('testing new id: %d' % new_id)
while User.get_by_id(new_id) != None:
new_id = random.randint(1,999999999)
logging.info('creating new id: %d' % new_id)
key = User(id=new_id).put()