【发布时间】:2016-03-13 23:15:21
【问题描述】:
我这几天一直在努力解决这个问题,但似乎找不到任何解决方案。我正在尝试使用 Flask 框架创建一个 REST APIendpoint。问题是 API 会在一段时间内给出正确的结果,并且随着时间的流逝,它会停止接收任何请求。我不知道为什么它会突然这样做。我最好的猜测是它的数据库连接池没有被清除。正如您在下面的代码中看到的那样,我正在正确关闭数据库连接,但我仍然面临这个问题。请帮忙!
from flask import Flask, jsonify
from flask_restful import Resource, Api
from flask_restful import reqparse
from sqlalchemy import create_engine
from flask.ext.httpauth import HTTPBasicAuth
from flask.ext.cors import CORS
conn_string = "mssql+pyodbc://x"
e = create_engine(conn_string)
auth = HTTPBasicAuth()
@auth.get_password
def get_password(username):
if username == 'x':
return 'x'
return None
app = Flask(__name__)
cors = CORS(app)
api = Api(app)
class Report(Resource):
decorators = [auth.login_required]
def get(self):
parser = reqparse.RequestParser()
parser.add_argument('start', type = str)
parser.add_argument('end', type = str)
args = parser.parse_args()
conn = e.connect()
stat = """
select a, b from report where c < ? and d > ?
"""
query = conn.execute(stat, [args['start'], args['end']])
json_dict = []
for i in query.cursor.fetchall():
res = {'aa': i[0], 'bb':i[1]}
json_dict.append(res)
conn.close()
return jsonify(results=json_dict)
api.add_resource(Report, '/report')
if __name__ == '__main__':
app.run(host='0.0.0.0')
【问题讨论】:
-
出于好奇,您是在某种服务器/共享主机上还是在本地运行它?如果是前者,在本地运行时是否有效?
-
是的,我在服务器上运行它。不,即使我在本地运行它也不起作用。 API 只给我一天左右的结果,之后我必须一次又一次地重新启动 VM。
标签: python azure flask sqlalchemy flask-restful