107 lines
3.5 KiB
Plaintext
107 lines
3.5 KiB
Plaintext
---
|
|
title: Running a Local Flask Backend
|
|
hide_title: true
|
|
sidebar_position: 5
|
|
version: 1
|
|
---
|
|
|
|
### Flask server
|
|
|
|
#### OS Dependencies
|
|
|
|
Make sure your machine meets the [OS dependencies](https://superset.apache.org/docs/installation/installing-superset-from-scratch#os-dependencies) before following these steps.
|
|
You also need to install MySQL or [MariaDB](https://mariadb.com/downloads).
|
|
|
|
Ensure that you are using Python version 3.7 or 3.8, then proceed with:
|
|
|
|
````bash
|
|
# Create a virtual environment and activate it (recommended)
|
|
python3 -m venv venv # setup a python3 virtualenv
|
|
source venv/bin/activate
|
|
|
|
# Install external dependencies
|
|
pip install -r requirements/testing.txt
|
|
|
|
# Install Superset in editable (development) mode
|
|
pip install -e .
|
|
|
|
# Initialize the database
|
|
superset db upgrade
|
|
|
|
# Create an admin user in your metadata database (use `admin` as username to be able to load the examples)
|
|
superset fab create-admin
|
|
|
|
# Create default roles and permissions
|
|
superset init
|
|
|
|
# Load some data to play with.
|
|
# Note: you MUST have previously created an admin user with the username `admin` for this command to work.
|
|
superset load-examples
|
|
|
|
# Start the Flask dev web server from inside your virtualenv.
|
|
# Note that your page may not have CSS at this point.
|
|
FLASK_ENV=development superset run -p 8088 --with-threads --reload --debugger
|
|
```
|
|
|
|
Or you can install via our Makefile
|
|
|
|
```bash
|
|
# Create a virtual environment and activate it (recommended)
|
|
$ python3 -m venv venv # setup a python3 virtualenv
|
|
$ source venv/bin/activate
|
|
|
|
# install pip packages + pre-commit
|
|
$ make install
|
|
|
|
# Install superset pip packages and setup env only
|
|
$ make superset
|
|
|
|
# Setup pre-commit only
|
|
$ make pre-commit
|
|
````
|
|
|
|
**Note: the FLASK_APP env var should not need to be set, as it's currently controlled
|
|
via `.flaskenv`, however if needed, it should be set to `superset.app:create_app()`**
|
|
|
|
If you have made changes to the FAB-managed templates, which are not built the same way as the newer, React-powered front-end assets, you need to start the app without the `--with-threads` argument like so:
|
|
`FLASK_ENV=development superset run -p 8088 --reload --debugger`
|
|
|
|
#### Dependencies
|
|
|
|
If you add a new requirement or update an existing requirement (per the `install_requires` section in `setup.py`) you must recompile (freeze) the Python dependencies to ensure that for CI, testing, etc. the build is deterministic. This can be achieved via,
|
|
|
|
```bash
|
|
$ python3 -m venv venv
|
|
$ source venv/bin/activate
|
|
$ python3 -m pip install -r requirements/integration.txt
|
|
$ pip-compile-multi --no-upgrade
|
|
```
|
|
|
|
#### Logging to the browser console
|
|
|
|
This feature is only available on Python 3. When debugging your application, you can have the server logs sent directly to the browser console using the [ConsoleLog](https://github.com/betodealmeida/consolelog) package. You need to mutate the app, by adding the following to your `config.py` or `superset_config.py`:
|
|
|
|
```python
|
|
from console_log import ConsoleLog
|
|
|
|
def FLASK_APP_MUTATOR(app):
|
|
app.wsgi_app = ConsoleLog(app.wsgi_app, app.logger)
|
|
```
|
|
|
|
Then make sure you run your WSGI server using the right worker type:
|
|
|
|
```bash
|
|
FLASK_ENV=development gunicorn "superset.app:create_app()" -k "geventwebsocket.gunicorn.workers.GeventWebSocketWorker" -b 127.0.0.1:8088 --reload
|
|
```
|
|
|
|
You can log anything to the browser console, including objects:
|
|
|
|
```python
|
|
from superset import app
|
|
app.logger.error('An exception occurred!')
|
|
app.logger.info(form_data)
|
|
```
|
|
|
|
### Frontend Assets
|
|
See [Running Frontend Assets Locally](https://superset.apache.org/docs/installation/installing-superset-from-scratch#os-dependencies)
|