我試圖用flask框架創建REST API端點。這是我的全部工作的腳本:Flask RESTful API:與db連接池問題
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:[email protected]:1433/x?driver=SQL Server"
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()
e = create_engine(conn_string)
conn = e.connect()
stat = """
select x from report
"""
query = conn.execute(stat)
json_dict = []
for i in query.cursor.fetchall():
res = {'x': i[0], 'xx': i[1]}
json_dict.append(res)
conn.close()
e.dispose()
return jsonify(results=json_dict)
api.add_resource(Report, '/report')
if __name__ == '__main__':
app.run(host='0.0.0.0')
的問題是,我得到的結果,當我把這個API只有一天左右後,除非我重新啓動我的腳本(或有時甚至是我的VM)我停下來得到結果之後我再次得到結果。我認爲數據庫連接池存在一些問題,但我正在關閉連接並進行處理。我不知道爲什麼API只給我一段時間的結果,因爲我必須每隔一天重新啓動我的VM。有任何想法嗎?
也許想想燒瓶SQLAlchemy的擴展?幫助使這件事更容易。 –