【发布时间】:2016-11-01 14:44:40
【问题描述】:
我正在创建一个 REST API。我正在使用 Python、Flask 和 MySQL 从数据库中获取数据并以 JSON 格式呈现它们。但我有一个问题。
REST API 由 NGINX 和 uWSGI 提供,并且运行良好。索引页面保持可用并且不会超时,但与数据库建立连接的页面会超时。页面变得无响应大约需要 15 分钟。在 phpmyadmin 或 navicat 等 RDBMS 中不会出现此问题。
它可能是什么,我该如何解决?下面是 REST API 代码。
# using python version 2.7.10
from flask import Flask, jsonify, request, session
import mysql.connector.pooling
#Make a connection with the DB
dbconfig = {
"host" : "12.34.5.78",
"database": "db",
"user": "user",
"password": "pass"
}
conn = mysql.connector.connect(pool_name = "mypool",
pool_size = 6,
**dbconfig)
#Define the root
app = Flask(__name__)
#Landings page
@app.route('/')
def index():
return "Hello World."
# return all resources by name
@app.route('/resources', methods=['GET'])
def allResourceNames():
conn1 = mysql.connector.connect(pool_name="mypool")
reader = conn1.cursor()
query = ("SELECT name FROM resources")
reader.execute(query)
resources = []
for name in reader:
resources.append({'name' : name[0]})
reader.close()
conn1.close()
return jsonify({"resources" : resources})
if __name__ == "__main__":
app.run(debug=True)
【问题讨论】:
-
在我看来,您在多个请求的过程中使用了一个连接。当该连接失效时,由于您没有创建新连接,因此无法处理新请求。我认为您应该研究连接池。也许这个问题可以帮助stackoverflow.com/questions/32658679/…
-
我注意到你们所说的。我已经更新了代码。几分钟后它仍然死机......