2017-01-22 10 views
1

Я пытаюсь создать систему open-auth, в которой пользователь может войти в одно приложение через другое.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

Возможно, это связано с тем, что ваш веб-сервер django работает в одиночном рабочем процессе (один процесс). Какой веб-сервер вы используете? Apache? Nginx? У вас есть способ проверить и, возможно, изменить количество работников для Django? – Fian

ответ

1

Если у вас есть только один рабочий, тогда рабочий занят обработкой внешнего запроса, и поэтому внутренний запрос никогда не получит ответа.

+0

Это похоже! Я переписал код, чтобы не дождаться ответа, и теперь все работает нормально. – Brachamul

 Смежные вопросы

  • Нет связанных вопросов^_^