数据存储是分布式的,因此ID是非顺序的:两个数据存储节点需要能够同时生成ID而不会引起冲突。
要获得随机实体,可以在创建时将0到1之间的随机浮点数附加到每个实体。然后进行查询,执行以下操作:
rand_num = random.random()entity = MyModel.all().order('rand_num').filter('rand_num >=', rand_num).get()if entity is None: entity = MyModel.all().order('rand_num').get()
编辑: 根据尼克的建议,更新了失败案例。