2017-06-27 6 views
0

私は何千ものモデルを持つDjangoプロジェクトの異常値を持っています。これは、Django REST Frameworkを使用しているデータに対するRESTfulなAPIとして機能します。 Djangoのrunserverを起動すると、プロジェクトのデータモデルが検証されるため、数分かかることがあります。一旦ロードされると、期待どおりに動作します。Apacheの再起動後にmod_wsgiが最初のページの読み込みに数分かかる

mod_wsgiも同様の動作を示します。公開後、またはApacheを再起動すると、ブラウザでページを表示するのに数分かかります。その最初のページの読み込み後、サイト全体がかなり即座に反応します。ドキュメントを読むことから、mod_wsgiがアプリケーションをGLOBALアプリケーショングループにロードしていると思われます。私は、デプロイメント(wsgi.pyに触れる)の直後に、このローディングプロセスを開始する方法を見つけようとしています。デプロイメント後にブラウザにウェブサイトを持ってくることを避けるために、プライベートネットワーク上にラウンドロビンプロキシの背後にいくつかのWebサーバーがあるため

私はWSGIScriptAliasGLOBALアプリケーショングループを追加し、WSGIImportScriptを追加することを試みましたが、どちらもうまくいかないようです。

問題のVirtualHostのファイルは.confです。私は明らかに何かが欠けている。代わりのプリロードについては

<VirtualHost *:443> 
    SSLEngine On 

    ServerName django-project-dev.my.domain.com 
    ErrorLog "|/usr/sbin/cronolog /path/to/log/httpd/errorlog/%Y/%Y-%m-django-project-dev-error.log" 
    LogLevel info 

    WSGIApplicationGroup %{GLOBAL} 
    WSGIDaemonProcess django-project-dev-https python-home=/path/to/django/djangoproject/virtualenvs/django-project-dev request-timeout=1800 connect-timeout=300 socket-timeout=600 user=djangoproject group=wharton 
    WSGIProcessGroup django-project-dev-https 
    WSGIScriptAlias//path/to/django/djangoproject/html/django-project-dev/config/wsgi.py process-group=django-project-dev-https application-group=%{GLOBAL} 
    WSGIImportScript /path/to/django/djangoproject/html/django-project-dev/config/wsgi.py process-group=django-project-dev-https application-group=%{GLOBAL} 

    <Directory /path/to/django/djangoproject/html/django-project-dev/config> 
    Require all granted 
    </Directory> 

    Alias /static/ /path/to/django/djangoproject/html/django-project-dev/static/ 
    <Directory /path/to/django/djangoproject/html/django-project-dev/static> 
    Require all granted 
    </Directory> 

    # This is required for Django REST Framework Auth Pass Thru 
    WSGIPassAuthorization On 
</VirtualHost> 

答えて

1

、:ちょうど

WSGIApplicationGroup %{GLOBAL} 
    WSGIDaemonProcess django-project-dev-https python-home=/path/to/django/djangoproject/virtualenvs/django-project-dev request-timeout=1800 connect-timeout=300 socket-timeout=600 user=djangoproject group=wharton 
    WSGIProcessGroup django-project-dev-https 
    WSGIScriptAlias//path/to/django/djangoproject/html/django-project-dev/config/wsgi.py process-group=django-project-dev-https application-group=%{GLOBAL} 
    WSGIImportScript /path/to/django/djangoproject/html/django-project-dev/config/wsgi.py process-group=django-project-dev-https application-group=%{GLOBAL} 

利用:WSGIScriptAlias

WSGIDaemonProcess django-project-dev-https python-home=/path/to/django/djangoproject/virtualenvs/django-project-dev request-timeout=1800 connect-timeout=300 socket-timeout=600 user=djangoproject group=wharton 
    WSGIScriptAlias//path/to/django/djangoproject/html/django-project-dev/config/wsgi.py process-group=django-project-dev-https application-group=%{GLOBAL} 

両方process-groupapplication-groupの使用はWSGIスクリプトファイルのプリロード引き起こすのに十分です。 WSGIImportScriptも同じでしたが、WSGIScriptAliasの両方のオプションを使用する場合は必要ありません。 WSGIScriptAliasにこれらのオプションを使用した場合は、WSGIProcessGroupまたはWSGIApplicationGroupも必要ありません。

はあなたにも追加しているものの確認しています:

VirtualHostの外
WSGIRestrictedEmbedded On 

ので、あなたにも、すべてのApacheのワーカープロセスの内部でのPythonを設定されていません。 mod_wsgiデーモンプロセスでのみ必要です。

お試しください。

あなたが持っているとおり:mod_wsgiを、それが何をしているか、あなたは何が起こっているかを確認することができますので、それは物事をロードしているときの詳細をログに記録しなければならない、Apacheの設定で

LogLevel info 

を。

+0

あなたの開発の努力と回答をありがとう、私はいつも新しいことを学びます。とても有難い! – FlipperPA

関連する問題