2016-09-25 3 views
0

저는 anglejs에 내장 된 프론트 엔드와 파이썬으로 빌드 된 백엔드와 app 엔진에있는 webapp2를 사용하고 있습니다.App Engine 프론트 엔드가 백엔드가 완료되고 데이터를 반환하기를 기다리는 중 - 올바른 방법은 무엇입니까?

백엔드는 타사 API를 호출하고 데이터를 가져 와서 프론트 엔드로 돌아갑니다.

백엔드의 API 요청에 최대 30 초가 걸릴 수 있습니다. 문제는 프론트 엔드가 데이터를 얻을 때까지는 더 이상 진행될 수 없다는 것입니다.

다른 탭을 사용하여 백엔드에 3 개의 동시 요청을 시도했지만 두 개가 실패했습니다. 이 앱이 한 번에 한 명의 사용자 만 허용한다고 제안하는 것 같습니다.

이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 내가 가진 하나의 생각은 다음과 같습니다

  • 사용 task queues 배경
  • 보낸 마지막 작업 큐에서 읽는 새로운 핸들러를 만들기에 제 3 자에 대한 API 호출을 실행하고 프론트 엔드 여론 조사를에이를 수 있도록 정기적으로
  • 업데이트 데이터가

사용할 수있게되면 프론트 엔드는 올바른 방법인가요? 이것은 프론트 엔드 + 백엔드에서 해결 된 문제이지만, 무엇을 검색해야할지 모르겠습니다.

감사합니다.

+0

어쩌면 프런트 엔드 호출을 동기식으로 만들고 애니메이션 GIF가 표시되면 API가 데이터를 반환 할 때까지 기다려주세요. – whoopididoo

+0

@whoopididoo - 이미 그렇게 하긴하지만 계속 받고있는 것 같습니다. DeadlineExceededErrors –

답변

1

프론트 엔드의 요청은 30 초로 제한됩니다. 그 후에 그들은 서버 측에서 시간 초과됩니다. 그것은 GAE의 디자인의 일부입니다. 작업 대기열에서 시작된 요청은 10 분이 소요되므로 아이디어가 실행 가능합니다. 그러나 동시 작업을 구분하기 위해 "마지막 전송"을 사용하는 대신 일부 식별자를 폴링에 사용하기를 원할 것입니다.

+0

제안 해 주셔서 감사합니다. 예, 저는 사용자 이메일을 사용하는 줄과 요청 유형에 대한 고유 한 식별자를 추적하여 뭔가를 생각하고있었습니다. 나는 또한 엔드 포인트를보고 있으며, 자동 10 분의 시간 간격으로, 그것이 올바른 방법 일지 궁금해. –

+0

그런 ID를 사용할 수 있습니다. 아마 작업을 대기열에 넣을 때 서버 측에서 고유 한 ID를 생성하고 해당 ID를 프론트 엔드에 대한 응답에 포함시킵니다. –

+0

대단한 아이디어! 고마워, 나는 그것을 사용할 것 같아! –

관련 문제