Numpy - Apache

时间:2017-06-18 20:16:43

标签: python flask

我在EC2(Ubuntu)上创建了一个Flask应用程序,因此我可以使用我创建的预测模型从另一个系统发送两个数据点。一切正常,没有numpy,但只要我在Apache中添加它就会引发内部服务器错误。所有模块都已通过pip -freeze安装和验证。该应用程序位于名为flaskapp的目录中。

以下是我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>

这是Flask应用代码:

#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()

我错过了什么?

1 个答案:

答案 0 :(得分:0)

如果是内部服务器错误,Apache的错误日志中应该有一条记录。最有可能的是,有一个未被捕获的异常,那里会有堆栈跟踪。请参阅Debugging Techniques — mod_wsgi 4.5.16 documentation

  

使用mod_wsgi时,除非您或您正在使用的Web框架   采取具体行动来捕捉异常并提供详细信息   另一种方式,唯一没有被捕的细节   异常将被记录在Apache错误日志文件中。该   因此,Apache错误日志文件是您的主要信息来源   当事情出错时。

用户请求looks something like this上的mod_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],这意味着加载/卸载模块时出错(例如编译错误)。