我创建了一个烧瓶应用程序并将其托管在Ubuntu服务器上。我知道我的apache配置是正确的,因为我能够提供示例烧瓶应用程序。但是,这个似乎给了我麻烦。代码如下:
from flask import Flask, render_template, request, url_for
import pickle
import engine
import config
# Initialize the Flask application
app = Flask(__name__)
model = pickle.load(open(config.MODEL_PATH, "rb"))
collection = engine.Collection(config.DATABASE_PATH)
search_engine = engine.SearchEngine(model, collection)
@app.route('/')
def form():
return render_template('index.html')
@app.route('/search/', methods=['POST'])
def search():
query = request.form['query']
results = search_engine.query(query)
return render_template('form_action.html', query=query, results=results)
@app.route('/retrieve/<int:item_number>', methods=['GET'])
def retrieve(item_number):
item = engine.Product(item_number, collection.open_document(str(item_number)))
return render_template('document.html', item=item)
if __name__ == '__main__':
app.run()
直接通过python解释器运行文件时,它工作正常,我可以访问。但是,当从apache和wsgi开始时,我得不到服务器的响应。它只是在发出请求时挂起,日志上没有任何内容。
我怀疑我的问题可能与我在程序开始时初始化的三个对象有关。也许它会遇到困难?
更新:我已经尝试评论代码的某些部分,看看是什么导致它停滞不前。将其追溯到引擎模块,导入NearestNeighbors似乎导致了问题。
import sqlite3
import config
from sklearn.neighbors import NearestNeighbors
from preprocessor import preprocess_document
from collections import namedtuple