1

Python と Flask で実行されている Web サイトがあります。私が知る限り、ランダムに 10 回のうち 4 回は 500 エラーを返します。

from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    return "Hello world!"

これが私の .wsgi ファイルです (私は virtualenv を使用しており、アプリケーションをインポートする前にアクティブ化しています):

activate_this = '/path/to/app/venv/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))

from myapp import app as application

これは私の Apache ホスト構成です。

<VirtualHost *:80>
    ServerName website.com

    WSGIDaemonProcess myapp user=ubuntu group=ubuntu processes=2 threads=5
    WSGIScriptAlias / /path/to/app/myapp.wsgi

    <Directory /path/to/app>
        WSGIProcessGroup myapp
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
    </Directory>
</VirtualHost>

これをデバッグするためのポインタは大歓迎です!

編集:

Apache エラー ログ:

mod_wsgi (pid=29581): Target WSGI script '/path/to/app/myapp.wsgi' cannot be loaded as Python module.
mod_wsgi (pid=29581): Exception occurred processing WSGI script '/path/to/app/myapp.wsgi'.
Traceback (most recent call last):
  File "/path/to/app/myapp.wsgi", line 4, in <module>
    from myapp import app as application
ImportError: No module named myapp

2 つのプロセスの 1 つ (29581) が virtualenv ビットを実行していないため、インポートするファイルが見つからないようです。

編集2:

PATH で見つからないローカル ファイル myapp.py です。これを .wsgi ファイルの先頭に含める必要がありました。

import sys
sys.path.insert(0, '/path/to/myapp')

activate_this = '/path/to/myapp/venv/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))

from myapp import app as application
4

0 に答える 0