Use cheroot as default production server for pgAdmin4. Fixes #5017

If DEBUG is true then we used the default flask server.
This commit is contained in:
Aditya Toshniwal 2019-12-20 11:32:02 +05:30 committed by Akshay Joshi
parent a6841bb1e1
commit 15c518f0f1
3 changed files with 27 additions and 10 deletions

View File

@ -14,6 +14,7 @@ New features
Housekeeping
************
| `Issue #5017 <https://redmine.postgresql.org/issues/5017>`_ - Use cheroot as default production server for pgAdmin4.
Bug fixes
*********

View File

@ -15,6 +15,7 @@
# ignored when building a PIP Wheel.
##############################################################################
blinker==1.4
cheroot==8.2.1
Flask==1.0.2
Werkzeug>=0.15.0
Flask-Gravatar==0.5.0

View File

@ -13,6 +13,7 @@ to start a web server."""
import os
import sys
from cheroot.wsgi import Server as CherootServer
if sys.version_info[0] >= 3:
import builtins
@ -190,15 +191,29 @@ if __name__ == '__main__':
# Reference:
# https://github.com/pallets/werkzeug/issues/220#issuecomment-11176538
try:
app.run(
host=config.DEFAULT_SERVER,
port=server_port,
use_reloader=(
(not PGADMIN_RUNTIME) and app.debug and
os.environ.get("WERKZEUG_RUN_MAIN") is not None
),
threaded=config.THREADED_MODE
)
if config.DEBUG:
app.run(
host=config.DEFAULT_SERVER,
port=server_port,
use_reloader=(
(not PGADMIN_RUNTIME) and app.debug and
os.environ.get("WERKZEUG_RUN_MAIN") is not None
),
threaded=config.THREADED_MODE
)
else:
# Can use cheroot instead of flask dev server when not in debug
# 10 is default thread count in CherootServer
num_threads = 10 if config.THREADED_MODE else 1
prod_server = CherootServer(
(config.DEFAULT_SERVER, server_port),
wsgi_app=app,
numthreads=num_threads,
server_name=config.APP_NAME)
try:
print("Using production server...")
prod_server.start()
except KeyboardInterrupt:
prod_server.stop()
except IOError:
app.logger.error("Error starting the app server: %s", sys.exc_info())