Browse Source

Merge pull request #16 from bfirsh/lazily-connect-to-redis

Lazily connect to Redis in voting app
Ben Firshman 9 năm trước cách đây
mục cha
commit
6562cee08c
2 tập tin đã thay đổi với 7 bổ sung23 xóa
  1. 7 6
      voting-app/app.py
  2. 0 17
      voting-app/utils/__init__.py

+ 7 - 6
voting-app/app.py

@@ -1,8 +1,5 @@
-from flask import Flask
-from flask import render_template
-from flask import request
-from flask import make_response
-from utils import connect_to_redis
+from flask import Flask, render_template, request, make_response, g
+from redis import Redis
 import os
 import socket
 import random
@@ -12,9 +9,12 @@ option_a = os.getenv('OPTION_A', "Cats")
 option_b = os.getenv('OPTION_B', "Dogs")
 hostname = socket.gethostname()
 
-redis = connect_to_redis("redis")
 app = Flask(__name__)
 
+def get_redis():
+    if not hasattr(g, 'redis'):
+        g.redis = Redis(host="redis", db=0)
+    return g.redis
 
 @app.route("/", methods=['POST','GET'])
 def hello():
@@ -25,6 +25,7 @@ def hello():
     vote = None
 
     if request.method == 'POST':
+        redis = get_redis()
         vote = request.form['vote']
         data = json.dumps({'voter_id': voter_id, 'vote': vote})
         redis.rpush('votes', data)

+ 0 - 17
voting-app/utils/__init__.py

@@ -1,17 +0,0 @@
-import time
-from redis import Redis, ConnectionError
-
-
-def connect_to_redis(host):
-    time.sleep(2)
-    print "Connecting to redis"
-
-    while True:
-        try:
-            redis = Redis(host=host, db=0)
-            redis.ping()
-            print "Connected to redis"
-            return redis
-        except ConnectionError:
-            print "Failed to connect to redis - retrying"
-            time.sleep(1)