InputReader의 목적은 일반적으로 작업을 각 엔터티의 작업으로 분할하는 것입니다. 대개 적절한 엔티티를 전달하는 각 타스크를 처리 할 핸들러를 작성합니다.
단순히 작업에 엔터티를 쓸 수 있으므로 DatastoreOutputWriter가 필요하지 않습니다. mapreduce lib에는 async Puts를 사용하여 좀 더 효율적으로 만들 수있는 몇 가지 도구가 있습니다. 추천하지만 사용하지 않는 코드는 계속 작동합니다. 여기에 작은 수정을하고 매퍼 단계에서 다시 엔티티를 기록하는 매우 간단한 핸들러입니다 :
def addNewAttribute(entity, *args, **kwargs):
try:
if not entity.get("newattribute"):
entity["newattribute"] = False
yield op.db.Put(entity) # save the entity back to datastore
yield op.counters.Increment("touched") # use mapreduce counter to track operations
except:
yield op.counters.Increment("touchFail")
덕분에,하지만 난 같은 엔티티를 수정하지 않습니다. 대신 처리하고 데이터 저장소에 처리 결과를 저장하려고합니다. 명확한 질문을보십시오. – pipacs
dragonx의 대답을 다시 읽으십시오 : 나는 감속기에서 op.db.Put를 사용하여 데이터 저장소에 쓸 수 있다고 생각합니다. – pipacs