我使用了这个线程的一个稍微修改的解决方案,从 Datastore 中获取一组随机选择的项目。我使用 ProtoRPC,虽然它没有太大区别,只是为了您的信息。我的代码如下所示:
@remote.method(RandomImagesRequest, RandomImagesResponse)
def get_random_images(self, request):
images = []
count = request.count
for i in range(0, count):
random_number = random.random()
img = Image.all().order('random_number').filter('random_number>=', random_number).get()
if img is None:
img = Image.all().order('-random_number').filter('random_number <', random_number).get()
image_message = ImageMessage(image_url=img.image_url)
images.append(image_message)
return RandomImagesResponse(images=images)
这样我就可以得到任意数量的随机选择的项目。但有时会出现重复项。如何有效地仅从 Datastore 中获取唯一项目?