GAE Python:同时执行许多独立的NDB事务

时间:2014-12-26 14:53:49

标签: python python-2.7 google-app-engine google-cloud-datastore app-engine-ndb

我正在使用NDB中的tasklet执行许多事务(实际上是100)。这是示例代码:

def import_entities(entities):
    @ndb.tasklet
    def put_single_entity_transaction(entity):

        @ndb.tasklet
        def put_single_entity():
            old_entity = yield Entity.get_by_id_async(entity.key.id())
            if not old_entity:
                yield entity.put_async()
                raise ndb.Return(entity)
            else:
                raise ValueError()

        entity = yield ndb.transaction_async(put_single_entity)
        raise ndb.Return(entity)

    futures = [put_single_entity_transaction(entity) for entity in entities]
    Future.wait_all(futures)

在F2实例上执行大约需要14秒。我可以以某种方式加快速度吗?我应该将方法改为另一种方法吗?感谢您的帮助!

0 个答案:

没有答案