Browse Source

update sort order

Patrick Falls 12 years ago
parent
commit
eaa5969530
5 changed files with 59 additions and 12 deletions
  1. 31 3
      flask/app.py
  2. 11 0
      flask/benchmark_config
  3. 11 3
      installer.py
  4. 3 4
      setup_util.py
  5. 3 2
      wsgi/setup.py

+ 31 - 3
flask/app.py

@@ -1,7 +1,9 @@
-from flask import Flask, jsonify, request
+#!/usr/bin/env python
+from flask import Flask, jsonify, request, render_template
 from flask.ext.sqlalchemy import SQLAlchemy
 from flask.ext.sqlalchemy import SQLAlchemy
 from sqlalchemy import create_engine
 from sqlalchemy import create_engine
 from random import randint
 from random import randint
+from operator import attrgetter
 
 
 try:
 try:
     import MySQLdb
     import MySQLdb
@@ -9,12 +11,15 @@ try:
 except ImportError:
 except ImportError:
     mysql_schema = "mysql+pymysql:"
     mysql_schema = "mysql+pymysql:"
 
 
+# setup
 
 
 app = Flask(__name__)
 app = Flask(__name__)
-app.config['SQLALCHEMY_DATABASE_URI'] = mysql_schema + '//benchmarkdbuser:benchmarkdbpass@DBHOSTNAME:3306/hello_world'
+app.config['SQLALCHEMY_DATABASE_URI'] = mysql_schema + '//benchmarkdbuser:benchmarkdbpass@DBHOSTNAME:3306/hello_world?charset=utf8'
 db = SQLAlchemy(app)
 db = SQLAlchemy(app)
 dbraw_engine = create_engine(app.config['SQLALCHEMY_DATABASE_URI'])
 dbraw_engine = create_engine(app.config['SQLALCHEMY_DATABASE_URI'])
 
 
+# models
+
 class World(db.Model):
 class World(db.Model):
   __tablename__ = "World"
   __tablename__ = "World"
   id = db.Column(db.Integer, primary_key=True)
   id = db.Column(db.Integer, primary_key=True)
@@ -29,6 +34,14 @@ class World(db.Model):
          'randomNumber': self.randomNumber
          'randomNumber': self.randomNumber
      }
      }
 
 
+class Fortune(db.Model):
+    __tablename__ = "Fortune"
+    id = db.Column(db.Integer, primary_key=True)
+    message = db.Column(db.String)
+
+
+# views
+
 @app.route("/json")
 @app.route("/json")
 def hello():
 def hello():
   resp = {"message": "Hello, World!"}
   resp = {"message": "Hello, World!"}
@@ -70,5 +83,20 @@ def get_random_world_single_raw():
   connection.close()
   connection.close()
   return jsonify(worlds=worlds)
   return jsonify(worlds=worlds)
 
 
[email protected]("/fortunes")
+def get_fortunes():
+    fortunes = list(Fortune.query.all())
+    fortunes.append(Fortune(id=0, message="Additional fortune added at request time."))
+    fortunes.sort(key=attrgetter('message'))
+    return render_template('fortunes.html', fortunes=fortunes)
+
[email protected]("/fortunesraw")
+def get_forutens_raw():
+    fortunes = list(dbraw_engine.execute("SELECT * FROM Fortune"))
+    fortunes.append(Fortune(id=0, message="Additional fortune added at request time."))
+    fortunes.sort(key=attrgetter('message'))
+    return render_template('fortunes.html', fortunes=fortunes)
+
+# entry point for debugging
 if __name__ == "__main__":
 if __name__ == "__main__":
-    app.run()
+    app.run(debug=True)

+ 11 - 0
flask/benchmark_config

@@ -6,6 +6,7 @@
       "json_url": "/json",
       "json_url": "/json",
       "db_url": "/dbs",
       "db_url": "/dbs",
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
+      "fortune_url": "/fortunes",
       "port": 8080,
       "port": 8080,
       "sort": 31
       "sort": 31
     },
     },
@@ -13,6 +14,7 @@
       "setup_file": "setup",
       "setup_file": "setup",
       "db_url": "/dbsraw",
       "db_url": "/dbsraw",
       "query_url": "/dbraw?queries=",
       "query_url": "/dbraw?queries=",
+      "fortune_url": "/fortunesraw",
       "port": 8080,
       "port": 8080,
       "sort": 84
       "sort": 84
     },
     },
@@ -21,8 +23,17 @@
       "json_url": "/json",
       "json_url": "/json",
       "db_url": "/dbs",
       "db_url": "/dbs",
       "query_url": "/db?queries=",
       "query_url": "/db?queries=",
+      "fortune_url": "/fortunes",
       "port": 8080,
       "port": 8080,
       "sort": 110
       "sort": 110
+    },
+    "pypy-mysql-raw": {
+      "setup_file": "setup_pypy",
+      "db_url": "/dbsraw",
+      "query_url": "/dbraw?queries=",
+      "fortune_url": "/fortunesraw",
+      "port": 8080,
+      "sort": 111
     }
     }
   }]
   }]
 }
 }

+ 11 - 3
installer.py

@@ -65,8 +65,7 @@ class Installer:
     self.__run_command("git clone https://github.com/iiilx/django-psycopg2-pool.git")
     self.__run_command("git clone https://github.com/iiilx/django-psycopg2-pool.git")
     self.__run_command("sudo python setup.py install", cwd="django-psycopg2-pool")
     self.__run_command("sudo python setup.py install", cwd="django-psycopg2-pool")
     self.__run_command("sudo pip install --upgrade numpy==1.7.1")
     self.__run_command("sudo pip install --upgrade numpy==1.7.1")
-    self.__run_command("sudo pip install --upgrade tornado motor Flask Flask-SQLAlchemy meinheld gunicorn")
-    self.__run_command("pypy-2.0/bin/pip install --upgrade tornado motor Flask Flask-SQLAlchemy PyMySQL")
+    self.__run_command("pypy-2.0/bin/pip install PyMySQL==0.5")
 
 
     #
     #
     # nodejs
     # nodejs
@@ -260,6 +259,13 @@ class Installer:
     #
     #
     ##############################################################
     ##############################################################
 
 
+    ##############################
+    # Tornado
+    ##############################
+    packages = "tornado==3.0.1 motor==0.1 pymongo==2.5"
+    self.__run_command("sudo pip install " + packages)
+    self.__run_command("pypy-2.0/bin/pip install " + packages)
+
     ##############################
     ##############################
     # Django
     # Django
     ##############################
     ##############################
@@ -279,7 +285,9 @@ class Installer:
     ##############################
     ##############################
     # Flask
     # Flask
     ##############################
     ##############################
-    self.__run_command("sudo pip install flask flask-sqlalchemy")
+    packages = "flask==0.9 flask-sqlalchemy==0.16 sqlalchemy==0.8.1 jinja2==2.6 werkzeug==0.8.3"
+    self.__run_command("sudo pip install " + packages)
+    self.__run_command("pypy-2.0/bin/pip install " + packages)
 
 
     ##############################
     ##############################
     # Bottle
     # Bottle

+ 3 - 4
setup_util.py

@@ -4,7 +4,6 @@ import re
 def replace_text(file, to_replace, replacement):
 def replace_text(file, to_replace, replacement):
   with open(file, "r") as conf:
   with open(file, "r") as conf:
     contents = conf.read()
     contents = conf.read()
-    replaced_text = re.sub(to_replace, replacement, contents)
-  f = open(file, "w")
-  f.write(replaced_text)
-  f.close()
+  replaced_text = re.sub(to_replace, replacement, contents)
+  with open(file, "w") as f:
+    f.write(replaced_text)

+ 3 - 2
wsgi/setup.py

@@ -5,7 +5,8 @@ import setup_util
 import os
 import os
 
 
 def start(args):
 def start(args):
-  subprocess.Popen("gunicorn hello:app -b 0.0.0.0:8080 -w " + str((args.max_threads * 2)) + " --log-level=critical", shell=True, cwd="wsgi")
+  subprocess.Popen('gunicorn hello:app --worker-class="egg:meinheld#gunicorn_worker" -b 0.0.0.0:8080 -w '
+                   + str((args.max_threads * 2)) + " --log-level=critical", shell=True, cwd="wsgi")
   return 0
   return 0
 def stop():
 def stop():
   p = subprocess.Popen(['ps', 'aux'], stdout=subprocess.PIPE)
   p = subprocess.Popen(['ps', 'aux'], stdout=subprocess.PIPE)
@@ -18,4 +19,4 @@ def stop():
       except OSError:
       except OSError:
         pass
         pass
 
 
-  return 0
+  return 0