2017-02-13 7 views
0

私は今週末に初めてのdjangoアプリケーションをサーバーにデプロイしました。私はPostgreSQL、PostGIS、virtualenvなどをインストールしなければならなかったので、それは明確なVPSサーバーでした。アプリケーションを作成するには時間がかかります。サーバからログアウトしたときにAJAXリクエストがgunicornで正常に動作しない

django開発サーバーでは問題なく動作しますが、VPSサーバー上でAJAXリクエストが正常に動作しない場合は、gunicorn(Nginxと協力)でアプリケーションをデプロイしました。私は3つのAJAXリクエストを直ちに送信します。そして、1つまたは2つの要求だけが値を返しました。だから私はgeventと、このスレッド(Django AJAX requests during regular request not going through)を発見し、このコマンドを実行しますgunicorn:

gunicorn myapp:wsgi:application --bind 0.0.0.0:9000 -k gevent --worker-connections 1001 --workers=3 

、それが動作します。すべてのリクエストが値を返し、すべてがOKです。だから私はプロセスをバックグラウンドに入れ、サーバからログアウトします。

しかし、私がサーバーからログアウトするたびに、リクエストは停止します。この行動は、ジーヴェルを持たない最初のものと同じです。仮想環境を有効にしたり、設定したりするときの問題か、これはサーバとしてのUbuntuの標準的な動作ですか?

私はどこに解決策を見つけるべきかわからないので、私はどんな助けも喜んでいます。

+0

どのようにプロセスをバックグラウンドに配置しますか?私はあなたが必要に応じてガンコーンを実行して再起動するスーパーバイザーを使用することをお勧めします。 –

+0

いいえ、私はCTRL + Zを押してbgと書いています。私がdahrensの答えからどのように見えるかはおそらく悪いですか?サーバーとアプリケーションはまだ動作していますが、要求が正しく機能していません。だから私は悪い背景を置くことでの問題を期待していなかった。 – Bulva

+0

これは、geventが監視者(またはそのようなもの)によって監視されなければならないことがわかっていて、アプリがまだ動作しているが要求がそうでない理由です。 – Bulva

答えて

1

現在、ログアウト時にプロセスを停止しています。プロセスを監視するプロセスマネージャが必要です。多くの可能な解決策については、gunicorn docsをお読みください。

+0

ありがとうございます。私はいくつかのモニターを試しましたが、時間がないので、今日も夜も続けます。 – Bulva

1

supervisorを使用することをおすすめします。それは、gunicornが実行されていることを確認し、クラッシュした場合に再起動します。 sudo apt-get install supervisor

でそれをインストールするのは、あなたがテストと呼ばれるウェブサイトを持っていると仮定しましょう、あなたは(/etc/supervisor/conf.d/内)/home/test/wwwはDjangoアプリケーションの場所です

[program:test] 
directory=/home/test/www 
command=/home/test/commands/start 
user=nobody 
autostart=true 
autorestart=true 
redirect_stderr=true 
stopsignal=QUIT 
stopasgroup=true 
killasgroup=true 

(あなたはもちろん、それを変更することができますが、次のtest.configを使用することができます)、/home/test/commands/startは、gunicornに実行を指示するスクリプトです(貼り付けたコマンド)。

+0

ありがとうございます。私は今日それを試してみます – Bulva

+0

それは働いていません。私はドキュメンテーションでそれがPython 3のためではないことを見た。それを残念。私はその情報を書いていませんでした。私は次のオプションを試し続けます – Bulva

+0

スーパーバイザーはpython3をサポートしていませんが、あなたのウェブサイトで使用できます。私はこの組み合わせを前に使っていました –

関連する問題