You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by jo...@apache.org on 2018/03/30 16:28:19 UTC
[incubator-superset] branch master updated: [cli] Deprecating
gunicorn/flower dependencies (#4451)
This is an automated email from the ASF dual-hosted git repository.
johnbodley pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git
The following commit(s) were added to refs/heads/master by this push:
new b3442a7 [cli] Deprecating gunicorn/flower dependencies (#4451)
b3442a7 is described below
commit b3442a7b53e1ca53e893a1433e8f026aee5f9783
Author: John Bodley <45...@users.noreply.github.com>
AuthorDate: Fri Mar 30 09:28:16 2018 -0700
[cli] Deprecating gunicorn/flower dependencies (#4451)
---
docs/installation.rst | 33 +++++++++++++++++++--------------
setup.py | 4 ++--
superset/cli.py | 15 ++++++++++++---
superset/config.py | 6 +++---
4 files changed, 36 insertions(+), 22 deletions(-)
diff --git a/docs/installation.rst b/docs/installation.rst
index 5cb4260..725dd9c 100644
--- a/docs/installation.rst
+++ b/docs/installation.rst
@@ -125,10 +125,7 @@ Follow these few simple steps to install Superset.::
# Create default roles and permissions
superset init
- # Start the web server on port 8088, use -p to bind to another port
- superset runserver
-
- # To start a development web server, use the -d switch
+ # To start a development web server on port 8088, use -p to bind to another port
# superset runserver -d
@@ -147,12 +144,8 @@ Gunicorn, preferably in **async mode**, which allows for impressive
concurrency even and is fairly easy to install and configure. Please
refer to the
documentation of your preferred technology to set up this Flask WSGI
-application in a way that works well in your environment.
-
-While the `superset runserver` command act as an quick wrapper
-around `gunicorn`, it doesn't expose all the options you may need,
-so you'll want to craft your own `gunicorn` command in your production
-environment. Here's an **async** setup known to work well: ::
+application in a way that works well in your environment. Here's an **async**
+setup known to work well in production: ::
 gunicorn \
-w 10 \
@@ -165,7 +158,7 @@ environment. Here's an **async** setup known to work well: ::
superset:app
Refer to the
-[Gunicorn documentation](http://docs.gunicorn.org/en/stable/design.html)
+`Gunicorn documentation <http://docs.gunicorn.org/en/stable/design.html>`_
for more information.
Note that *gunicorn* does not
@@ -228,7 +221,6 @@ of the parameters you can copy / paste in that configuration module: ::
# Superset specific config
#---------------------------------------------------------
ROW_LIMIT = 5000
- SUPERSET_WORKERS = 4
SUPERSET_WEBSERVER_PORT = 8088
#---------------------------------------------------------
@@ -503,8 +495,8 @@ execute beyond the typical web request's timeout (30-60 seconds), it is
necessary to configure an asynchronous backend for Superset which consist of:
* one or many Superset worker (which is implemented as a Celery worker), and
- can be started with the ``superset worker`` command, run
- ``superset worker --help`` to view the related options
+ can be started with the ``celery worker`` command, run
+ ``celery worker --help`` to view the related options.
* a celery broker (message queue) for which we recommend using Redis
or RabbitMQ
* a results backend that defines where the worker will persist the query
@@ -524,6 +516,10 @@ have the same configuration.
CELERY_CONFIG = CeleryConfig
+To start a Celery worker to leverage the configuration run: ::
+
+ celery worker --app=superset.sql_lab:celery_app --pool=gevent -Ofair
+
To setup a result backend, you need to pass an instance of a derivative
of ``werkzeug.contrib.cache.BaseCache`` to the ``RESULTS_BACKEND``
configuration key in your ``superset_config.py``. It's possible to use
@@ -564,6 +560,15 @@ in this dictionary are made available for users to use in their SQL.
}
+Flower is a web based tool for monitoring the Celery cluster which you can
+install from pip: ::
+
+ pip install flower
+
+and run via: ::
+
+ celery flower --app=superset.sql_lab:celery_app
+
Making your own build
---------------------
diff --git a/setup.py b/setup.py
index f8f785e..e635a11 100644
--- a/setup.py
+++ b/setup.py
@@ -63,12 +63,12 @@ setup(
'flask-sqlalchemy==2.1',
'flask-testing==0.7.1',
'flask-wtf==0.14.2',
- 'flower==0.9.2',
+ 'flower==0.9.2', # deprecated
'future>=0.16.0, <0.17',
'geopy==1.11.0',
'python-geohash==0.8.5',
'humanize==0.5.1',
- 'gunicorn==19.7.1',
+ 'gunicorn==19.7.1', # deprecated
'idna==2.6',
'markdown==2.6.11',
'pandas==0.22.0',
diff --git a/superset/cli.py b/superset/cli.py
index de3a38f..dc11e2c 100755
--- a/superset/cli.py
+++ b/superset/cli.py
@@ -48,15 +48,15 @@ def init():
@manager.option(
'-w', '--workers',
default=config.get('SUPERSET_WORKERS', 2),
- help='Number of gunicorn web server workers to fire up')
+ help='Number of gunicorn web server workers to fire up [DEPRECATED]')
@manager.option(
'-t', '--timeout', default=config.get('SUPERSET_WEBSERVER_TIMEOUT'),
- help='Specify the timeout (seconds) for the gunicorn web server')
+ help='Specify the timeout (seconds) for the gunicorn web server [DEPRECATED]')
@manager.option(
'-s', '--socket', default=config.get('SUPERSET_WEBSERVER_SOCKET'),
help='Path to a UNIX socket as an alternative to address:port, e.g. '
'/var/run/superset.sock. '
- 'Will override the address and port values.')
+ 'Will override the address and port values. [DEPRECATED]')
def runserver(debug, use_reloader, address, port, timeout, workers, socket):
"""Starts a Superset web server."""
debug = debug or config.get('DEBUG')
@@ -75,6 +75,9 @@ def runserver(debug, use_reloader, address, port, timeout, workers, socket):
debug=True,
use_reloader=use_reloader)
else:
+ logging.info(
+ "The Gunicorn 'superset runserver' command is deprecated. Please "
+ "use the 'gunicorn' command instead.")
addr_str = ' unix:{socket} ' if socket else' {address}:{port} '
cmd = (
'gunicorn '
@@ -285,6 +288,9 @@ def update_datasources_cache():
help='Number of celery server workers to fire up')
def worker(workers):
"""Starts a Superset worker for async SQL query execution."""
+ logging.info(
+ "The 'superset worker' command is deprecated. Please use the 'celery "
+ "worker' command instead.")
if workers:
celery_app.conf.update(CELERYD_CONCURRENCY=workers)
elif config.get('SUPERSET_CELERY_WORKERS'):
@@ -315,6 +321,9 @@ def flower(port, address):
'--port={port} '
'--address={address} '
).format(**locals())
+ logging.info(
+ "The 'superset flower' command is deprecated. Please use the 'celery "
+ "flower' command instead.")
print(Fore.GREEN + 'Starting a Celery Flower instance')
print(Fore.BLUE + '-=' * 40)
print(Fore.YELLOW + cmd)
diff --git a/superset/config.py b/superset/config.py
index 0ff4e3b..34788b4 100644
--- a/superset/config.py
+++ b/superset/config.py
@@ -42,12 +42,12 @@ ROW_LIMIT = 50000
VIZ_ROW_LIMIT = 10000
# max rows retrieved by filter select auto complete
FILTER_SELECT_ROW_LIMIT = 10000
-SUPERSET_WORKERS = 2
-SUPERSET_CELERY_WORKERS = 32
+SUPERSET_WORKERS = 2 # deprecated
+SUPERSET_CELERY_WORKERS = 32 # deprecated
SUPERSET_WEBSERVER_ADDRESS = '0.0.0.0'
SUPERSET_WEBSERVER_PORT = 8088
-SUPERSET_WEBSERVER_TIMEOUT = 60
+SUPERSET_WEBSERVER_TIMEOUT = 60 # deprecated
EMAIL_NOTIFICATIONS = False
CUSTOM_SECURITY_MANAGER = None
SQLALCHEMY_TRACK_MODIFICATIONS = False
--
To stop receiving notification emails like this one, please contact
johnbodley@apache.org.