2017-01-22 2 views
1

사용자가 다른 앱을 통해 하나의 앱에 로그인 할 수있는 개방형 인증 시스템을 구축하려고합니다.Django 서버가 요청하는 동안 응답 할 수없는 것 같습니다.

내 "인증"앱이 비밀리에 "클라이언트"앱에 토큰을 보냅니다. 그런 다음 클라이언트 응용 프로그램은 사용자의 세부 사항을 묻는 인증 응용 프로그램을 호출하여 변경되지 않았는지 확인합니다. 마지막으로 인증 응용 프로그램이 사용자 세부 정보로 응답하고 사용자가 클라이언트 응용 프로그램으로 리디렉션되고 토큰과 함께 암호로 로그인됩니다.

이 모든 것이 로컬 컴퓨터에서 제대로 작동하는 것 같습니다. 그러나 공개 서버에 푸시하면 문제가 발생합니다.

인증 앱이 토큰이 설정되었는지 확인해야하는 클라이언트 앱의 응답을 기다리는 동안 사용자 세부 정보를 요청할 수없는 것처럼 보입니다.

기본적으로 클라이언트 응용 프로그램은 인증 응용 프로그램이 요청에 대한 응답을 기다립니다. 따라서 클라이언트 응용 프로그램은 토큰이 성공적으로 설정되었음을 인증 응용 프로그램에 회신하지 않습니다. 따라서 요청은 결코 성공할 수 없습니다. 대략적인 일정입니다

AUTH : Posts token to client, waits for 200 response 
CLIENT : Receive token, asks for user details, waits for 200 response 
AUTH : Still waiting for its 200 response, so doesn't answer client request. After a while, ends in a 504 gateway timeout error 

일부 호출이 비동기 적으로 이루어 지도록 변경해야합니까? 또는 문제를 잘못 식별하고 있습니까?

+1

아마도 장고의 웹 서버가 단일 작업자 (단일 프로세스)에서 실행 중이기 때문일 수 있습니다. 어떤 웹 서버를 사용하고 있습니까? 아파치? Nginx? 당신은 장고에 대한 근로자의 수를 확인하고 가능한 한 바꿀 수있는 방법이 있습니까? – Fian

답변

1

근로자가 한 명이라면 근로자는 외부 요청을 처리하는 중입니다. 따라서 내부 요청은 절대로 응답을받지 못합니다.

+0

그럴 것 같습니다! 나는 응답을 기다리는 것을 피하기 위해 코드를 다시 작성했고, 이제는 문제가 없다. – Brachamul

관련 문제