3

私は実際の解決策なしに数時間を無駄にしました.ここに問題があります.Django管理者にログインすると、すぐに、または数回クリックした後、私は捨てられます.

すべての設定と構成をしばらく調べました。これまでのところ、唯一の手がかりは uwsgi ログ ファイルからのものです。たとえば、次のようになります。

www.example.com [pid: 20047|app: 0|req: 1120/2060] 217.9.101.34 () {42 vars in 841 bytes} [Thu Jul 18 15:27:35 2013] GET /admin/ => ...
www.example.com [pid: 20047|app: 0|req: 1122/2063] 217.9.101.34 () {40 vars in 786 bytes} [Thu Jul 18 15:27:37 2013] GET /admin/auth/ => ...
www.example.com [pid: 20047|app: 0|req: 1124/2066] 217.9.101.34 () {40 vars in 801 bytes} [Thu Jul 18 15:27:39 2013] GET /admin/auth/user/ => ...
www.example.com [pid: 20047|app: 0|req: 1125/2067] 217.9.101.34 () {40 vars in 740 bytes} [Thu Jul 18 15:27:39 2013] GET /admin/jsi18n/ => ...
www.example.com [pid: 19082|app: 0|req: 947/2072] 217.9.101.34 () {42 vars in 841 bytes} [Thu Jul 18 15:27:41 2013] GET /admin/ => ...
www.example.com [pid: 20047|app: 0|req: 1128/2081] 217.9.101.34 () {42 vars in 841 bytes} [Thu Jul 18 15:27:44 2013] GET /admin/auth/

最初のいくつかのリクエストには同じプロセス ID があり、それが私がログインしている場所です。その後、別のプロセスが次のリクエストを処理しますが、どうやらこのプロセスは私のセッションを認識しておらず、ログアウトしています。次のリクエストには元の ID が再び含まれていますが、私の Cookie はすでにリセットされています。

プロジェクトの再セットアップ、uwsgi構成の再セットアップ、nginxのチェック、すべての再起動など、すべてを試しましたが、何も役に立ちません。また、複数のコンピューターの複数のブラウザーで表示されるため、Cookie エラーである可能性もありません。結局、Cookie が設定され、セッションがデータベースに記録されます。

スタックは Django 1.5.1、Python 2.7、virtualenv、buildout、MySQL 5.5、nginx、uwsgi、Ubuntu 12.04 です。

何か案は?

編集:

これは uwsgi 構成です。

[uwsgi]
#vhost = true  # tried to see if that helps
plugins = python
socket = /tmp/example.com.sock
master = true
enable-threads = true
processes = 8
cheaper = 2
max-requests=1000
reload-on-rss=110
vacuum=True
harakiri=20
buffer-size=16384  # added to try if that helps
wsgi-file = /var/www/blabla/.../django.wsgi
virtualenv = /var/www/blabla
chdir = /var/www/blabla/...
touch-reload = /var/www/blabla/.../django.wsgi
4

2 に答える 2

3

SESSION_ENGINE を確認しましたか? たとえば、django キャッシングを使用するように設定し、locmem:// に設定すると、この種の問題が発生します。

別の (発生しにくい場合でも発生する可能性がある) 問題 ( --lazy/--lazy-apps モードの場合) は、コードの古いコピーを使用したプロセスである可能性があります。インスタンス全体をリロードしてみましたか?

于 2013-07-18T15:20:45.067 に答える
2

デフォルトでは、django はセッションをデータベースに保存するため、このバグが原因である可能性が最も高いです: https://code.djangoproject.com/ticket/20537

uwsgi >= 1.2.6 への更新を検討してください

于 2013-07-24T11:18:45.340 に答える