2017-06-18 5 views
0

私はEC2(Ubuntu)上でFlaskアプリケーションを作成しましたので、別のシステムから2つのデータポイントを送信するために作成した予測モデルを使用できます。すべてうまく動作しませんが、すぐにApacheに戻って追加すると、内部サーバーエラーがスローされます。すべてのモジュールがpip-freeでインストールされ、検証されています。このアプリはflaskappというディレクトリにあります。ここでNumpy - Apacheの内部サーバーエラー

は私のWSGIからのコードです:ここでは

輸入SYS

sys.path.insert(0, '/var/www/html/flaskapp') 
from flaskapp import app as application 

は、アイブ氏は、Apacheのconfファイルに加えられた変更は以下のとおりです。

WSGIDaemonProcess flaskapp threads=5 
WSGIScriptAlias//var/www/html/flaskapp/flaskapp.wsgi 

<Directory flaskapp> 
    WSGIProcessGroup flaskapp 
    WSGIApplicationGroup %{GLOBAL} 
    Order deny,allow 
    Allow from all 
</Directory> 

、ここでは、フラスコアプリですコード:

#imports 
import numpy as np 
from flask import Flask, jsonify, request 
import pickle as pickle 

#Open Predicitve Model 
pklmodel = 'model.pkl' 
my_model = pickle.dumps(pklmodel, protocol=2) 
app = Flask(__name__) 

#Flask App Endpoint 
@app.route('/api',methods=['POST']) 

#Predicitions Function 
def make_predict(): 
    data = request.get_json(force=True) 
    predict_request = [data['Temp'],data['Pressure']] 
    predict_request = np.array(predict_request) 
    predGhi = my_model.predict(predict_request) 
    output = [predGhi[0]] 
    return jsonify(results=output) 

#run app as webservice 
if __name__ == '__main__': 
    app.run() 

私は何が欠けていますか?

+2

[Apache + mod \ _wsgi - Pythonがインストールされたモジュールをロードしない可能性があります](https://stackoverflow.com/questions/40391409/apache-mod-wsgi-python-doesnt-load-installed-modules) –

答えて

0

内部サーバーエラーの場合、Apacheのエラーログにレコードが存在するはずです。おそらく、キャッチされていない例外があり、そこにスタックトレースがあるでしょう。 Debugging Techniques — mod_wsgi 4.5.16 documentationを参照してください。

あなたやあなたが を使用しているWebフレームワークが例外をキャッチし、 で交互に詳細を提示する具体的な行動を取らない限り、mod_wsgiのを使用する場合は、キャッチされない 例外の詳細が記録されます唯一の場所がですApacheのエラーログファイル。したがって、状況が悪くなった場合、 Apacheエラーログファイルは、情報の第一義的なソースである です。

ユーザ要求looks something like thismod_wsgiエラー・ログ・エントリ:

[error] [client ..] mod_wsgi (pid=8184): Exception occurred processing WSGI script '.../django.wsgi'. 
[error] [client ..] Traceback (most recent call last): 
<...> 
[error] [client ..] File "../apps/py26_logging/handlers.py", line 394, in emit 
[error] [client ..] self.stream.flush() 
[error] [client ..] ValueError: I/O operation on closed file 

それは[client]なしの場合は、このエラーは、モジュール(例えば、コンパイルエラー)ロード/アンロード時に発生したことを意味します。

+0

ありがとうございます - 最初にチェックしましたが、今すぐ再チェックして、numpyという名前のモジュールはありませんが、まだインストールされていてピップフリーズはそのようなことを示しています。 – DataGuy

+0

@ DataGuyまあ、 'sys.path'を確認してください。 –

+0

ありがとうございます - 他のすべてのモジュールが正常に動作しています - 特にnumpyのsys.pathを確認してください。 – DataGuy