summaryrefslogtreecommitdiff
path: root/lib/server.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/server.py')
-rw-r--r--lib/server.py38
1 files changed, 27 insertions, 11 deletions
diff --git a/lib/server.py b/lib/server.py
index e0f3140..8506c7a 100644
--- a/lib/server.py
+++ b/lib/server.py
@@ -1,10 +1,14 @@
from flask import Flask
from flask import abort, redirect, url_for, request, jsonify
-from cherrypy import wsgiserver
+
import sys, os
+import cherrypy
+from paste.translogger import TransLogger
+
sys.path.append("./lib")
from pb import *
from config import SERVER_HOST, SERVER_PORT
+#http://flask.pocoo.org/docs/0.10/deploying/fastcgi/ this should be the one
class InvalidUsage(Exception):
status_code = 400
@@ -28,7 +32,7 @@ class Server(object):
@self.app.route('/test', methods=['GET'])
def test():
return "HELLO WORLD!"
- @self.app.route('/<pb_classname>', methods=['POST'])
+ @self.app.route('/im/api/<pb_classname>', methods=['POST'])
def pb(pb_classname):
return self._response_post(pb_classname, request.form.to_dict())
@@ -41,7 +45,7 @@ class Server(object):
self._classname_aliases = {
'generate' : 'PbGenerate',
'imgrid' : 'PbGrid',
- 'imbreak' : 'PbBreak',
+ 'imbreak' : 'PbBreaker',
'impattern' : 'PbPattern',
'imgradient' : 'PbGradient',
'landscape' : 'PbLandscape',
@@ -74,19 +78,31 @@ class Server(object):
raise;
return jsonify({ 'error' : 'Request could not be processed' })
- def run(self):
- self.app.run()
+ def run(self, host=SERVER_HOST, port=SERVER_PORT):
+ self.app.run(host=host, port=port)
+
+#http://fgimian.github.io/blog/2012/12/08/setting-up-a-rock-solid-python-development-web-server/
def run_wsgi(self, server_port=SERVER_PORT, host=SERVER_HOST):
- d = wsgiserver.WSGIPathInfoDispatcher({'/': self.app})
- sys.stderr.write("Starting a wsgi server on %s port %s\n" % (host, server_port))
- self._wsgi_server = wsgiserver.CherryPyWSGIServer(('0.0.0.0', server_port), d)
- self._wsgi_server.start()
+ # Enable WSGI access logging via Paste
+ app_logged = TransLogger(self.app)
+
+ # Mount the WSGI callable object (app) on the root directory
+ cherrypy.tree.graft(app_logged, '/')
+
+ # Set the configuration of the web server
+ cherrypy.config.update({
+ 'engine.autoreload_on': True,
+ 'log.screen': True,
+ 'server.socket_port': server_port,
+ 'server.socket_host': host
+ })
+ cherrypy.engine.start()
+ cherrypy.engine.block()
+
def stop(self):
if self._wsgi_server:
- self._wsgi_server.stop()
- self._wsgi_server = None
return
else:
return