this threadのわずかに変更されたソリューションを使用して、データストアからランダムに選択したアイテムのセットを取得しました。私は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)
このようにして、任意の数のランダムに選択した項目を取得します。しかし、重複が現れることもあります。データストアから一意のアイテムだけを効果的に取得するにはどうすればよいですか?
この方法は1つのクエリでは機能しますが、(データストアへの新しい書き込みがないと仮定して)頻繁に一緒に選択されるアイテムのグループを作っています。 –
これに対処するには、乱数をフェッチするときに乱数を再割り当てします。 –