فهرست منبع

flask-raw: Fix connection leak.

INADA Naoki 11 سال پیش
والد
کامیت
111b582fb3
1فایلهای تغییر یافته به همراه19 افزوده شده و 14 حذف شده
  1. 19 14
      flask/app.py

+ 19 - 14
flask/app.py

@@ -110,7 +110,9 @@ def get_fortunes():
 
 @app.route("/fortunesraw")
 def get_forutens_raw():
-    fortunes = list(dbraw_engine.execute("SELECT * FROM Fortune"))
+    res = dbraw_engine.execute("SELECT * FROM Fortune")
+    fortunes = res.fetchall()
+    res.close()
     fortunes.append(Fortune(id=0, message="Additional fortune added at request time."))
     fortunes.sort(key=attrgetter('message'))
     return render_template('fortunes.html', fortunes=fortunes)
@@ -138,19 +140,22 @@ def updates():
 @app.route("/raw-updates")
 def raw_updates():
     """Test 5: Database Updates"""
-    num_queries = request.args.get('queries', 1, type=int)
-    if num_queries > 500:
-        num_queries = 500
-
-    worlds = []
-    rp = partial(randint, 1, 10000)
-    for i in xrange(num_queries):
-        world = dbraw_engine.execute("SELECT * FROM World WHERE id=%s", (rp(),)).fetchone()
-        randomNumber = rp()
-        worlds.append({'id': world['id'], 'randomNumber': randomNumber})
-        dbraw_engine.execute("UPDATE World SET randomNumber=%s WHERE id=%s",
-                             (randomNumber, world['id']))
-    return json_response(worlds)
+    connection = dbraw_engine.connect()
+    try:
+        num_queries = request.args.get('queries', 1, type=int)
+        if num_queries > 500:
+            num_queries = 500
+
+        worlds = []
+        rp = partial(randint, 1, 10000)
+        for i in xrange(num_queries):
+            world = connection.execute("SELECT * FROM World WHERE id=%s", (rp(),)).fetchone()
+            randomNumber = rp()
+            worlds.append({'id': world['id'], 'randomNumber': randomNumber})
+            connection.execute("UPDATE World SET randomNumber=%s WHERE id=%s", (randomNumber, world['id']))
+        return json_response(worlds)
+    finally:
+        connection.close()
 
 
 @app.route('/plaintext')