我希望我的 id 为 < 999999999 但现在试图编程它似乎有相反的效果,我只是让 id 变大,当我尝试分配 id 时 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)
我的日志输出显示分配的 ID 错误:
2012-02-13 03:19:07.396 start 98765439124
I 2012-02-13 03:19:07.396 end 98765439123
我怎样才能解决这个问题?
更新
我最终使用的肮脏的解决方法是制作一种我不应该做的自己的 ID 系统,但它是这种情况下唯一的解决方案,我认为这不会造成冲突或重复,如果实体开始填充它可能会很慢up,但是现在这似乎是一个对用户来说可以接受的解决方案,尽管它看起来可能不是很好看代码:
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()