app.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. from flask import Flask, render_template, request, make_response, g
  2. from redis import Redis
  3. import os
  4. import socket
  5. import random
  6. import json
  7. option_a = os.getenv('OPTION_A', "Cats")
  8. option_b = os.getenv('OPTION_B', "Dogs")
  9. hostname = socket.gethostname()
  10. app = Flask(__name__)
  11. def get_redis():
  12. if not hasattr(g, 'redis'):
  13. g.redis = Redis(host="redis", db=0)
  14. return g.redis
  15. @app.route("/", methods=['POST','GET'])
  16. def hello():
  17. voter_id = request.cookies.get('voter_id')
  18. if not voter_id:
  19. voter_id = hex(random.getrandbits(64))[2:-1]
  20. vote = None
  21. if request.method == 'POST':
  22. redis = get_redis()
  23. vote = request.form['vote']
  24. data = json.dumps({'voter_id': voter_id, 'vote': vote})
  25. redis.rpush('votes', data)
  26. resp = make_response(render_template(
  27. 'index.html',
  28. option_a=option_a,
  29. option_b=option_b,
  30. hostname=hostname,
  31. vote=vote,
  32. ))
  33. resp.set_cookie('voter_id', voter_id)
  34. return resp
  35. if __name__ == "__main__":
  36. app.run(host='0.0.0.0', port=80, debug=True, threaded=True)