GAE NDB示例使用Future.wait all()

时间:2012-10-04 18:13:47

标签: google-app-engine

对不起我的无知,但我的期望是这会起作用:

from google.appengine.ext import ndb
from models import myModels

delete_futures = []
delete_futures.append(ndb.delete_multi_async(myModels.Kind1.query().fetch(999999, keys_only=True)))
delete_futures.append(ndb.delete_multi_async(myModels.Kind2.query().fetch(999999, keys_only=True)))

ndb.Future.wait_all(delete_futures)

但它抛出“TypeError:列表对象不可用”。

2 个答案:

答案 0 :(得分:3)

或许使用.extend创建一个列表而不是列表列表?

  

等到通过列表中的所有期货完成。

不要期待您传递的列表列表。

delete_futures = []
delete_futures.extend(ndb.delete_multi_async(myModels.Kind1.query().fetch(999999,          keys_only=True)))
delete_futures.extend(ndb.delete_multi_async(myModels.Kind2.query().fetch(999999, keys_only=True)))

https://developers.google.com/appengine/docs/python/ndb/futureclass#Future_wait_all

答案 1 :(得分:0)

delete_multi_async的每次调用都会返回一个期货列表,因此您的delete_futures列表是一个列表列表。将您的append更改为extend,它应该可以正常工作