Switch from Paste for serving to Waitress
Incredibly, it looks like none of our documentation has to change taking this route...!
This commit is contained in:
parent
149f46f7d5
commit
d61778a489
@ -19,34 +19,9 @@
|
|||||||
selfname=$(basename "$0")
|
selfname=$(basename "$0")
|
||||||
local_bin="./bin"
|
local_bin="./bin"
|
||||||
|
|
||||||
# Test whether or not gunicorn is installed
|
|
||||||
# -----------------------------------------
|
|
||||||
if [ -f "${local_bin}/python" ]; then
|
|
||||||
our_python="${local_bin}/python";
|
|
||||||
else
|
|
||||||
our_python="python";
|
|
||||||
fi
|
|
||||||
|
|
||||||
if $our_python -c "import sys
|
|
||||||
try:
|
|
||||||
import gunicorn
|
|
||||||
sys.exit(0)
|
|
||||||
except ImportError:
|
|
||||||
sys.exit(1)
|
|
||||||
"; then
|
|
||||||
use_gunicorn=true;
|
|
||||||
else
|
|
||||||
use_gunicorn=false;
|
|
||||||
fi
|
|
||||||
# -----------------------------------------
|
|
||||||
|
|
||||||
case "$selfname" in
|
case "$selfname" in
|
||||||
lazyserver.sh)
|
lazyserver.sh)
|
||||||
if $use_gunicorn; then
|
|
||||||
starter_cmd=gunicorn;
|
|
||||||
else
|
|
||||||
starter_cmd=paster;
|
starter_cmd=paster;
|
||||||
fi
|
|
||||||
ini_prefix=paste
|
ini_prefix=paste
|
||||||
;;
|
;;
|
||||||
lazycelery.sh)
|
lazycelery.sh)
|
||||||
@ -62,14 +37,9 @@ esac
|
|||||||
if [ "$1" = "-h" ]; then
|
if [ "$1" = "-h" ]; then
|
||||||
echo "$0 [-h] [-c filename.ini] [ARGS_to_${starter_cmd} ...]"
|
echo "$0 [-h] [-c filename.ini] [ARGS_to_${starter_cmd} ...]"
|
||||||
echo ""
|
echo ""
|
||||||
if $use_gunicorn; then
|
|
||||||
echo " For Gunicorn settings, see at:"
|
|
||||||
echo " http://docs.gunicorn.org/en/19.0/settings.html"
|
|
||||||
else
|
|
||||||
echo " For example:"
|
echo " For example:"
|
||||||
echo " $0 -c fcgi.ini port_number=23371"
|
echo " $0 -c fcgi.ini port_number=23371"
|
||||||
echo " or: $0 --server-name=fcgi --log-file=paste.log"
|
echo " or: $0 --server-name=fcgi --log-file=paste.log"
|
||||||
fi
|
|
||||||
echo ""
|
echo ""
|
||||||
echo " The configfile defaults to ${ini_prefix}_local.ini,"
|
echo " The configfile defaults to ${ini_prefix}_local.ini,"
|
||||||
echo " if that is readable, otherwise ${ini_prefix}.ini."
|
echo " if that is readable, otherwise ${ini_prefix}.ini."
|
||||||
@ -112,11 +82,7 @@ set -x
|
|||||||
export CELERY_ALWAYS_EAGER=true
|
export CELERY_ALWAYS_EAGER=true
|
||||||
case "$selfname" in
|
case "$selfname" in
|
||||||
lazyserver.sh)
|
lazyserver.sh)
|
||||||
if $use_gunicorn; then
|
|
||||||
$starter --paste "$ini_file" --log-file=- $@;
|
|
||||||
else
|
|
||||||
$starter serve "$ini_file" "$@" --reload;
|
$starter serve "$ini_file" "$@" --reload;
|
||||||
fi
|
|
||||||
;;
|
;;
|
||||||
lazycelery.sh)
|
lazycelery.sh)
|
||||||
MEDIAGOBLIN_CONFIG="${ini_file}" \
|
MEDIAGOBLIN_CONFIG="${ini_file}" \
|
||||||
|
@ -365,34 +365,3 @@ def paste_app_factory(global_config, **app_config):
|
|||||||
mgoblin_app = hook_transform('wrap_wsgi', mgoblin_app)
|
mgoblin_app = hook_transform('wrap_wsgi', mgoblin_app)
|
||||||
|
|
||||||
return mgoblin_app
|
return mgoblin_app
|
||||||
|
|
||||||
|
|
||||||
def paste_server_selector(wsgi_app, global_config=None, **app_config):
|
|
||||||
"""
|
|
||||||
Select between gunicorn and paste depending on what ia available
|
|
||||||
"""
|
|
||||||
# See if we can import the gunicorn server...
|
|
||||||
# otherwise we'll use the paste server
|
|
||||||
try:
|
|
||||||
import gunicorn
|
|
||||||
except ImportError:
|
|
||||||
gunicorn = None
|
|
||||||
|
|
||||||
if gunicorn is None:
|
|
||||||
# use paste
|
|
||||||
from paste.httpserver import server_runner
|
|
||||||
|
|
||||||
cleaned_app_config = dict(
|
|
||||||
[(key, app_config[key])
|
|
||||||
for key in app_config
|
|
||||||
if key in ["host", "port", "handler", "ssl_pem", "ssl_context",
|
|
||||||
"server_version", "protocol_version", "start_loop",
|
|
||||||
"daemon_threads", "socket_timeout", "use_threadpool",
|
|
||||||
"threadpool_workers", "threadpool_options",
|
|
||||||
"request_queue_size"]])
|
|
||||||
|
|
||||||
return server_runner(wsgi_app, global_config, **cleaned_app_config)
|
|
||||||
else:
|
|
||||||
# use gunicorn
|
|
||||||
from gunicorn.app.pasterapp import PasterServerApplication
|
|
||||||
return PasterServerApplication(wsgi_app, global_config, **app_config)
|
|
||||||
|
@ -29,7 +29,6 @@ class ServeCommand(object):
|
|||||||
return loadapp(app_spec, name=name, relative_to=relative_to, **kwargs)
|
return loadapp(app_spec, name=name, relative_to=relative_to, **kwargs)
|
||||||
|
|
||||||
def daemonize(self):
|
def daemonize(self):
|
||||||
# TODO: pass to gunicorn if available
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def restart_with_reloader(self):
|
def restart_with_reloader(self):
|
||||||
|
@ -13,6 +13,6 @@ config = %(here)s/mediagoblin.ini
|
|||||||
CELERY_ALWAYS_EAGER = true
|
CELERY_ALWAYS_EAGER = true
|
||||||
|
|
||||||
[server:main]
|
[server:main]
|
||||||
use = egg:gunicorn
|
use = egg:waitress#main
|
||||||
host = 127.0.0.1
|
host = 127.0.0.1
|
||||||
port = 6543
|
port = 6543
|
||||||
|
19
paste.ini
19
paste.ini
@ -6,7 +6,8 @@
|
|||||||
debug = false
|
debug = false
|
||||||
|
|
||||||
[pipeline:main]
|
[pipeline:main]
|
||||||
pipeline = errors mediagoblin
|
# pipeline = errors mediagoblin
|
||||||
|
pipeline = mediagoblin
|
||||||
|
|
||||||
[app:mediagoblin]
|
[app:mediagoblin]
|
||||||
use = egg:mediagoblin#app
|
use = egg:mediagoblin#app
|
||||||
@ -51,14 +52,14 @@ debug = false
|
|||||||
# The server that is run by default.
|
# The server that is run by default.
|
||||||
# By default, should only be accessable locally
|
# By default, should only be accessable locally
|
||||||
[server:main]
|
[server:main]
|
||||||
use = egg:mediagoblin#paste_server_selector
|
use = egg:waitress#main
|
||||||
host = 127.0.0.1
|
host = 127.0.0.1
|
||||||
port = 6543
|
port = 6543
|
||||||
# Gunicorn settings. See http://docs.gunicorn.org/en/19.0/settings.html
|
# # Gunicorn settings. See http://docs.gunicorn.org/en/19.0/settings.html
|
||||||
# for more information about configuring Gunicorn
|
# # for more information about configuring Gunicorn
|
||||||
proc_name = gmg
|
# proc_name = gmg
|
||||||
reload = true
|
# reload = true
|
||||||
accesslog = -
|
# accesslog = -
|
||||||
|
|
||||||
#######################
|
#######################
|
||||||
# Helper server configs
|
# Helper server configs
|
||||||
@ -69,7 +70,7 @@ accesslog = -
|
|||||||
# Use this if you want to run on port 6543 and have MediaGoblin be
|
# Use this if you want to run on port 6543 and have MediaGoblin be
|
||||||
# viewable externally
|
# viewable externally
|
||||||
[server:broadcast]
|
[server:broadcast]
|
||||||
use = egg:Paste#http
|
use = egg:waitress#main
|
||||||
host = 0.0.0.0
|
host = 0.0.0.0
|
||||||
port = 6543
|
port = 6543
|
||||||
|
|
||||||
@ -80,6 +81,6 @@ host = %(fcgi_host)s
|
|||||||
port = %(fcgi_port)s
|
port = %(fcgi_port)s
|
||||||
|
|
||||||
[server:http]
|
[server:http]
|
||||||
use = egg:Paste#http
|
use = egg:waitress#main
|
||||||
host = %(http_host)s
|
host = %(http_host)s
|
||||||
port = %(http_port)s
|
port = %(http_port)s
|
||||||
|
5
setup.py
5
setup.py
@ -43,16 +43,13 @@ def get_version():
|
|||||||
pyversion_install_requires = []
|
pyversion_install_requires = []
|
||||||
if PY2:
|
if PY2:
|
||||||
pyversion_install_requires.append('argparse') # only for < 2.7
|
pyversion_install_requires.append('argparse') # only for < 2.7
|
||||||
pyversion_install_requires.append('PasteScript')
|
|
||||||
pyversion_install_requires.append('sqlalchemy-migrate>=0.9.6')
|
pyversion_install_requires.append('sqlalchemy-migrate>=0.9.6')
|
||||||
pyversion_install_requires.append('mock==1.0.1') # mock is in the stdlib for 3.3+
|
pyversion_install_requires.append('mock==1.0.1') # mock is in the stdlib for 3.3+
|
||||||
# PyPI version (1.4.2) does not have proper Python 3 support
|
# PyPI version (1.4.2) does not have proper Python 3 support
|
||||||
pyversion_install_requires.append('ExifRead')
|
pyversion_install_requires.append('ExifRead')
|
||||||
pyversion_install_requires.append('Paste')
|
|
||||||
else:
|
|
||||||
pyversion_install_requires.append('gunicorn')
|
|
||||||
|
|
||||||
install_requires = [
|
install_requires = [
|
||||||
|
'waitress',
|
||||||
'alembic==0.6.6',
|
'alembic==0.6.6',
|
||||||
'python-dateutil',
|
'python-dateutil',
|
||||||
'wtforms',
|
'wtforms',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user