【发布时间】:2014-01-24 18:12:39
【问题描述】:
我有一个带有 3 个参数的 tasklet,一个带有 id 和标题的字典,一个用户键,以及数据库中已有的记录列表。 函数 defer_fetch 在 for 循环中被调用 N 次。
@ndb.tasklet
def defer_fetch(data, user_key, already_inserted):
if data['_id'] not in already_inserted:
document_key = yield Document.fetch_or_create(data)
yield defer_fetch_document(user_key, document_key)
else:
document_key = alread_inserted[data['_id']]
raise ndb.Return(document_key)
@ndb.tasklet
def defer_fetch_document(user_key, document_key):
deferred.defer(process_document, user_key, document_key, _queue="process-documents")
raise ndb.Return(True)
document.fetch_or_create 的代码在所有 defer_fetch 调用中并行执行,但调用 fetch_document 不是,如附件所示
如何让 defer_fetch_document 也并行运行?
【问题讨论】:
标签: python google-app-engine asynchronous app-engine-ndb