2017-11-13 11 views
0

를 추가하지 않고 빠른 데이터 저장소 쿼리를 만드는 방법은 다음과 같은 간단한 쿼리있다 : 그것은 100 개의 행 저를 필요인덱스

client = datastore.Client('fmy_project') 
query = client.query(kind='kind1') 
query.add_filter('x', '=','y') 
for row in query.fetch(): 
    #process the row and save to file 

로컬 컴퓨터에서 작업 할 때 오초 결과를 가져올 수 있습니다. 이것은 매우 느립니다.

recvmsg (9 0x7ffffc9ee9f0, 0) = -1 EAGAIN (일시적으로 사용할 자원)

폴 ([{FD : 내가 파이썬 프로세스 strace를 만들 때

저는 많은 행을 얻을 = 8, 이벤트 = POLLIN}, {FD = 9, 이벤트 = POLLIN}], 2, 200) = 0 (시간 초과)

데이터 저장소가 한 번에 모든 것을 가져 오기 또는를 만들기 위해 말할 수있는 방법이 있나요 특정 다른 최적화?

Google 검색을 통해 관련 옵션을 찾지 못했습니다.

답변

1

가져 오는 데 5 초 밖에 걸리지 않습니까? 마지막에 for 루프의 데이터를 처리하지 않고? 당신이 경우

일반적으로 그것은 더 나은 :

  1. 데이터
  2. 프로세스 반환 된 목록 자체에 대한 데이터 (내 데이터 저장소에 저장하지 (데이터의 목록이 반환을 가져올를) 가져 오기 당신의 한 번 "put_multi"
를 사용에서 루프!)
  • 저장 여러 행

    ndb.put_multi (데이터 목록)

    여기 문서를 참조하십시오 : 다윗의 ndb` 일 (자신의 코드가 수도`GAE-최적화되지 않은 일반 데이터 저장소 클라이언트 라이브러리를 사용 https://cloud.google.com/datastore/docs/concepts/entities#batch_operations

  • +1

    주 GAE 앱이 아니거나 Google 클라우드에서 실행되지 않아도됩니다.) –

    +0

    맞습니다. 처리는 매우 미흡합니다. 나는 단지 defaultdict (int)로 통계를 작성하고 있으므로 오버 헤드 통계는 거의 없다 [row [0]] + = 1 –