0

대기 시간에 맞게 GAE webapp를 최적화하려고합니다.GAE/Python에서 요청 간 async db 액세스

앱에는 일반적으로 차례로 두 가지 요청이 있습니다.

첫 번째 요청 중에 비동기 db/memcache 요청을 시작한 다음 그 요청을 다음 요청에서 사용하는 것이 안전합니까?

는 (필자는 두 번째 요청이 다른 인스턴스를 칠 수 있음을 알고 있어요. 그것은 캐시 미스로 처리 할 것) 당신은 하나 개의 요청에 비동기 API 호출을 시작하고 다른에있는 그것의 결과를 얻을 수 없습니다

+0

안전 문제를 제외하고 어떻게 이것을 제안 하시겠습니까? –

+0

@DanielRoseman - 단순히 전역 네임 스페이스에 대한 참조를 유지합니다. – Srg

+0

글로벌 네임 스페이스를 사용하면 첫 번째 요청을 처리 한 인스턴스의 메모리가 트래픽 증가 및 캐싱이 더 유용 할 때 캐시 추첨에서 승리 할 가능성을 줄이는 것을 의미합니까? – tesdal

답변

0

. HTTP 서비스 인프라는 요청에서 시작된 모든 API 호출이 완료 될 때까지 기다렸다가 HTTP 응답을 다시 전송합니다. 비동기 API 호출을 나타내는 데이터 구조는 두 번째 요청에서 쓸모가 없습니다 (동일한 인스턴스에 도달하더라도).

요청한 API 호출을 파악하고 일부를 피하거나, 일부에 대해 memcache를 사용하거나, 평행을 맞출 수 있는지 Appstats를 사용해보십시오.

데이터 저장소 API에 memcache를 통합 한 NDB를 사용할 수도 있습니다.

+0

그게 내가 문서를 읽은 것으로 생각했지만 이상한 것은 작동하고있는 것 같습니다. 내 비동기 요청이 암시 적으로 다시 만들어지고 두 번째 요청 중에 다시 전송 될 수 있습니까? – Srg

+0

NDB로 전환 :-) 훌륭한 작업에 감사드립니다! 나는 그곳에 이전에 있었으면 좋겠다. 그래서 나는 내 자신의 추악한 NDB 해킹을 구현할 필요가 없을 것이다. – Srg

+0

팬텀 효과를 보았을 것입니다 만, 코드가 없으면 어떤 일이 일어나고 있는지 말할 수 없습니다. 아마도 조사 할만한 가치가 없을 것입니다. –