Use gunicorn instead of werkzeug
Flask use werkzeug as default WSGI container, but it cannot support production requirement and leads to crash in some cases. So use gunicorn instead of it. Change-Id: I2e542ab79c755c2407ae695a6de29c063233269b Closes-Bug: #1641242
This commit is contained in:
parent
e621c9f3dc
commit
48f4c30b21
@ -11,4 +11,4 @@ python-dateutil==2.5.3
|
|||||||
pytz==2016.7
|
pytz==2016.7
|
||||||
requests==2.11.1
|
requests==2.11.1
|
||||||
six==1.10.0
|
six==1.10.0
|
||||||
Werkzeug==0.11.11
|
gunicorn==19.6.0
|
||||||
|
@ -52,4 +52,4 @@ source-dir = releasenotes/source
|
|||||||
|
|
||||||
[entry_points]
|
[entry_points]
|
||||||
console_scripts =
|
console_scripts =
|
||||||
valence = valence.run:main
|
valence = valence.cmd.api:main
|
||||||
|
0
valence/cmd/__init__.py
Normal file
0
valence/cmd/__init__.py
Normal file
@ -14,16 +14,42 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
import gunicorn.app.base
|
||||||
|
from gunicorn.six import iteritems
|
||||||
|
|
||||||
from valence.api.route import app as application
|
from valence.api.route import app as application
|
||||||
from valence import config as cfg
|
from valence import config as cfg
|
||||||
|
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class StandaloneApplication(gunicorn.app.base.BaseApplication):
|
||||||
|
|
||||||
|
def __init__(self, app, options=None):
|
||||||
|
self.options = options or {}
|
||||||
|
self.application = app
|
||||||
|
super(StandaloneApplication, self).__init__()
|
||||||
|
|
||||||
|
def load_config(self):
|
||||||
|
config = dict([(key, value) for key, value in iteritems(self.options)
|
||||||
|
if key in self.cfg.settings and value is not None])
|
||||||
|
for key, value in iteritems(config):
|
||||||
|
self.cfg.set(key.lower(), value)
|
||||||
|
|
||||||
|
def load(self):
|
||||||
|
return self.application
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
application.run(host=cfg.bind_host, port=cfg.bind_port, debug=cfg.debug)
|
options = {
|
||||||
|
'bind': '%s:%s' % (cfg.bind_host, cfg.bind_port)
|
||||||
|
}
|
||||||
|
StandaloneApplication(application, options).run()
|
||||||
LOG.info(("Valence Server on http://%(host)s:%(port)s"),
|
LOG.info(("Valence Server on http://%(host)s:%(port)s"),
|
||||||
{'host': cfg.bind_host, 'port': cfg.bind_port})
|
{'host': cfg.bind_host, 'port': cfg.bind_port})
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
Loading…
Reference in New Issue
Block a user