2013-07-20 2 views
1

작업 대기열과 20 개의 백엔드 인스턴스를 통해 GCS에서 AppEngine으로 상당히 많은 양의 데이터를 이전하려고합니다. 문제는 새로운 Cloud Storage 라이브러리가 urlfetch timeout을 존중하지 못하거나 다른 일이 진행되고 있다는 것입니다.AppEngine Cloud Storage Python 라이브러리 시간 초과 문제

import cloudstorage as gcs 
gcs.set_default_retry_params(gcs.RetryParams(urlfetch_timeout=60, 
              max_retry_period=300)) 
... 
with gcs.open(fn, 'r') as fp: 
    raw_gcs_file = fp.read() 

큐가 일시 중지 그래서 다음 작품 잘, 나는 한 번에 하나의 작업을 실행,하지만 난 다음 20 개 백엔드에 대한 20 개의 동시 작업을 실행하려고하면 일이 시작합니다

I 2013-07-20 00:18:16.418 Got exception while contacting GCS. Will retry in 0.2 seconds. 
I 2013-07-20 00:18:16.418 Unable to fetch URL: https://storage.googleapis.com/<removed> 
I 2013-07-20 00:18:21.553 Got exception while contacting GCS. Will retry in 0.4 seconds. 
I 2013-07-20 00:18:21.554 Unable to fetch URL: https://storage.googleapis.com/<removed> 
I 2013-07-20 00:18:25.728 Got exception while contacting GCS. Will retry in 0.8 seconds. 
I 2013-07-20 00:18:25.728 Unable to fetch URL: https://storage.googleapis.com/<removed> 
I 2013-07-20 00:18:31.428 Got exception while contacting GCS. Will retry in 1.6 seconds. 
I 2013-07-20 00:18:31.428 Unable to fetch URL: https://storage.googleapis.com/<removed> 
I 2013-07-20 00:18:34.301 Got exception while contacting GCS. Will retry in -1 seconds. 
I 2013-07-20 00:18:34.301 Unable to fetch URL: https://storage.googleapis.com/<removed> 
I 2013-07-20 00:18:34.301 Urlfetch retry 5 failed after 22.8741798401 seconds total 

22 초 후에 어떻게 실패 할 수 있습니까? 재시도 매개 변수를 전혀 사용하지 않는 것 같습니다.

+0

지금은 deadstart param을 90 (초)으로 강제 설정하여 cloudstorage/storage_api.py : do_request_async()에 대한 빠른 해킹 작업을 수행 할 수있었습니다. 20 개의 백엔드를 실행할 때 여전히 오류/시간 초과가 발생하지만 이전보다 훨씬 적습니다. 나중에 더 자세히 조사해야합니다. – warren

답변

1

이것은 gcs 클라이언트 라이브러리의 버그입니다. 곧 수정 될 것입니다. 감사!

해킹 할 수 있습니다. 그러나 여전히 빈번히 시간이 초과되면 fp.read (size = some_size)를 시도 할 수 있습니다. 파일 크기가 크고 32MB 응답 (URL 페치 응답 크기 제한) 및 90 초 데드 라인 인 경우 전송 속도를 364KB/s로 가정합니다.

+0

최대한 빨리 수정해야합니다. 사람들을 GCS 클라이언트 라이브러리로 마이그레이션하도록 강요하고 파일과 유사한 Blobstore 및 중요한 라이브러리가 배포 된 라이브러리에서 멀리 떨어지게하는 것은 용납 될 수없는 일입니다. – rdodev

+1

https://code.google.com/p/appengine-gcs-client/source/detail?r=94 – Yey