내 문제가 가장 릴리스 메모리에 asynchrones URL의 응답 AppEngine에의 요구를 가져 오는 방법입니다 메모리를 해제합니다. 다음은 기본적으로 파이썬에서 수행하는 작업입니다.모범 사례는
rpcs = []
for event in event_list:
url = 'http://someurl.com'
rpc = urlfetch.create_rpc()
rpc.callback = create_callback(rpc)
urlfetch.make_fetch_call(rpc, url)
rpcs.append(rpc)
for rpc in rpcs:
rpc.wait()
내 테스트 시나리오에서는 1500 요청에 해당합니다. 그러나 짧은 시간 내에 훨씬 더 많은 것을 처리 할 수있는 아키텍처가 필요합니다.
그런 다음 결과를 처리하기 위해 큐에 작업을 추가하는 콜백 함수,이 : 내가 너무 많은 동시 RPC 호출을 수행하는 것이,
def event_callback(rpc):
result = rpc.get_result()
data = json.loads(result.content)
taskqueue.add(queue_name='name', url='url', params={'data': data})
내 문제는, 나의 인스턴스 충돌의 메모리 :
del result
del data
:
은 이미 세 가지 시도 "975 개 요청을 처리 한 후 159.234 MB 소프트 개인 메모리 제한을 초과은 총" 5,
및
result = None
data = None
및 I 콜백 함수 후 수동 가비지 수집기 달렸다. 따라서 인스턴스 충돌 -
gc.collect()
그러나 아무것도는 콜백 함수는 큐에 작업을 추가 한 후 바로 메모리를 해제하는 것. 그것을 할 다른 방법이 있습니까?
동안하지 솔루션 등, 사용 가능한 메모리를 증가 인스턴스 클래스를 변경. –
확인 그래 -하지만 아직 나에 대한 최종 해결책 : 작업에 –