このスレッドからわずかに変更されたソリューションを使用して、データストアからランダムに選択されたアイテムのセットを取得しました。私は 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)
このようにして、ランダムに選択されたアイテムをいくつでも取得できます。しかし、時々重複が表示されます。データストアから一意のアイテムのみを効果的に取得するにはどうすればよいですか?