2017-01-22 8 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

おそらく、あなたのdjangoのWebサーバーが単一のワーカー(シングルプロセス)で実行されている可能性があります。どのWebサーバーを使用していますか? Apache? Nginx?あなたはジャンゴの労働者の数を確認し、おそらくそれを変更する方法がありますか? – Fian

答えて

1

ワーカーが1人だけの場合、ワーカーは外部リクエストを処理しているので、内部リクエストは決して応答を得ません。

+0

そうだね!私はレスポンスを待たずにコードを書き直しました。 – Brachamul

関連する問題