ndb.get_multi_async
numaralı çağrı için ilk ve tüm ardışık sonuçları tamamlanma sırasına göre tüketmenin yerleşik veya kanonik bir yolu var mı?ndb aysnc "verim next" i tüketmek için get_multi_async
ben beklenir ve bu çizgisinde bunu göstermektedir: yapıldığını olup olmadığını görmek için futures
kontrol etmek tüketilen geleceği kaldırmak için
def yield_next(futures):
while futures:
yield ndb.Future.wait_any(futures)
# We have to remove the yielded future from the futures.
# How do we know which future was removed?
# ... futures.remove(???)
for model in yield_next(ndb.get_multi_async(keys)):
...
Tek yoldur. doğasında bir yarış durumu vardır: Aynı anda veya remove
aramadan önce her durumda tam herhangi vadeli, futures
çoklu elemanlar olabilir Eğer yapılır. Aksi halde hangi geleceğin tüketildiğini belirlemenin güvenilir bir yolunun farkında değilim.
biri bu oldukça yaygın bir model olduğunu beklenebilir ancak Halledildi görmedim. ndb/tasklets.py
içinden bakıldığında bazı egzotik (okuyun: belgesiz) görünmektedir ReducingFuture
veya MultiFuture
gibi olasılıklar, ama onları hiç kullanmamış. Belki de cevap, görevlerin kendileriyle ilgilidir.