2012-04-02 4 views
2

내가 다음 개체 구조를 읽고, 병렬화 할 싶은 말 읽는 가능한 한 많이 읽고

root_object --> ShardCounter 
      | 
      -> SubObject1 (1..N) 
      | 
      -> SubObject2 (1..N) --> ShardCounter 
            | 
            -> SubObject3 (1..N) 

1)이 의미있는 memcache에와 상호 작용하는 것입니다 및/또는 작업 목록에서 ShardCounter를 가져 오기 위해 저장 하시겠습니까? 내가 볼 수있는 한 memcache는 get_async이 아니므로, 이것이 잘 병렬화 될지 확신 할 수 없다. SubObject2에 대한 결과를 생성하는 태스크 릿에서

2), 나는 iter.has_next_async() 패턴을 사용 또는 I)는 예를 들어, SubObject3 's의, 또는 전체 (다른 태스크 릿 다른 무언가를 검색 할 fecth_async().map(...)를 부를 것이다?

모든 포인터 주셔서 감사합니다.

답변

3

memcache의 비동기 함수가 최상위 레벨에 정의되어 있지는 않지만 클라이언트 클래스에는 비동기 함수가 있습니다 (문서 번호 : here).이 클래스는 NDB 및 작업 표와 함께 사용할 수 있습니다. NDB는 여러 개의 비동기 get 작업을 하나의 멀티 가져 오기로 결합 할 수 없으므로 수행중인 작업에 따라 get_multi을 수행하는 것이 더 효율적일 수 있습니다. 편집 : NDB에는 Memcache 인터페이스가 있습니다. 자세한 내용은 Guido의 답변을 참조하십시오.

두 번째 질문에 대해, 당신은 결과로 무엇을하고 있는지, 그리고 왜, 그리고 어떻게 대안을 보았는지에 대해 좀 더 자세하게 설명해야합니다. 비동기 결과를 모두 가져와야하는 경우 하나의 명령문으로 모든 결과를 얻을 수 있습니다.

+1

감사합니다. Nick, 당신은 큰 도움이됩니다! –

+1

내 대답보기. –

관련 문제