mirror of
https://github.com/apache/superset.git
synced 2026-05-08 09:25:56 +00:00
90 lines
2.6 KiB
Python
Executable File
90 lines
2.6 KiB
Python
Executable File
# Licensed to the Apache Software Foundation (ASF) under one
|
|
# or more contributor license agreements. See the NOTICE file
|
|
# distributed with this work for additional information
|
|
# regarding copyright ownership. The ASF licenses this file
|
|
# to you under the Apache License, Version 2.0 (the
|
|
# "License"); you may not use this file except in compliance
|
|
# with the License. You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing,
|
|
# software distributed under the License is distributed on an
|
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
# KIND, either express or implied. See the License for the
|
|
# specific language governing permissions and limitations
|
|
# under the License.
|
|
import logging
|
|
from subprocess import Popen
|
|
|
|
import click
|
|
from colorama import Fore
|
|
from flask.cli import with_appcontext
|
|
|
|
from superset import app
|
|
from superset.extensions import celery_app
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
@click.command()
|
|
@with_appcontext
|
|
@click.option(
|
|
"--workers",
|
|
"-w",
|
|
type=int,
|
|
help="Number of celery server workers to fire up",
|
|
)
|
|
def worker(workers: int) -> None:
|
|
"""Starts a Superset worker for async SQL query execution."""
|
|
logger.info(
|
|
"The 'superset worker' command is deprecated. Please use the 'celery "
|
|
"worker' command instead."
|
|
)
|
|
if workers:
|
|
celery_app.conf.update(CELERYD_CONCURRENCY=workers)
|
|
elif app.config["SUPERSET_CELERY_WORKERS"]:
|
|
celery_app.conf.update(
|
|
CELERYD_CONCURRENCY=app.config["SUPERSET_CELERY_WORKERS"]
|
|
)
|
|
|
|
local_worker = celery_app.Worker(optimization="fair")
|
|
local_worker.start()
|
|
|
|
|
|
@click.command()
|
|
@with_appcontext
|
|
@click.option(
|
|
"-p",
|
|
"--port",
|
|
default="5555",
|
|
help="Port on which to start the Flower process",
|
|
)
|
|
@click.option(
|
|
"-a",
|
|
"--address",
|
|
default="localhost",
|
|
help="Address on which to run the service",
|
|
)
|
|
def flower(port: int, address: str) -> None:
|
|
"""Runs a Celery Flower web server
|
|
|
|
Celery Flower is a UI to monitor the Celery operation on a given
|
|
broker"""
|
|
broker_url = celery_app.conf.BROKER_URL
|
|
cmd = (
|
|
"celery flower "
|
|
f"--broker={broker_url} "
|
|
f"--port={port} "
|
|
f"--address={address} "
|
|
)
|
|
logger.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)
|
|
print(Fore.BLUE + "-=" * 40)
|
|
Popen(cmd, shell=True).wait() # pylint: disable=consider-using-with
|