mirror of
https://github.com/apache/superset.git
synced 2026-04-09 11:25:23 +00:00
* chore: split CLI into multiple files * Update tests * Who fixes the fixtures? * Add subcommands dynamically * Rebase
81 lines
2.6 KiB
Python
Executable File
81 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
|