1.8 KiB
1.8 KiB
Flask template
Simple flask template
Running
python3 -m venv venv
source venv/bin/activate
source .env # see example.env
pip install -r requirements.txt
cd src
memcached -d
# If you remove migrations/:
# flask db init
# vim migrations/script.py.mako (add import flask_app)
# flask db migrate -m 'Initial migration'
flask db upgrade
flask run
For production use a WSGI server such as Gunicorn:
python3 -m venv venv
source venv/bin/activate
source .env # see example.env
pip install -r requirements.txt
pip install --upgrade gunicorn
cd src
memcached -d
flask db upgrade
python3 -m gunicorn -b 127.0.0.1:12345 -w 4 app:app # ... Or whatever your configuration is
I don't want a generic flask_app
module name
Run python3 rename.py <new_module_name>
, for example, python3 rename.py my_app
:)
I need custom subcommands
In src/flask_app/__init__.py
you can register your custom flask
subcommands using click
:
import click
import flask
@click.command("hello")
def cmd_hello() -> None:
"""Print hello"""
print("Hello!")
def create_app(name: str) -> flask.Flask:
...
app: flask.Flask = flask.Flask(name)
...
# Commands
app.cli.add_command(create_counter)
...
return app
If you have a lot of custom commands it is advised you move your commands to a file called commands.py
or alike, then register them as usual using app.cli.add_command
. To run these subcommands you would simply do
flask hello
Or whatever your custom subcommand is.
Linting and Formatting
Use the following tools:
- Black: https://pypi.org/project/black/
- Isort: https://pypi.org/project/isort/
- Pyright: https://pypi.org/project/pyright/
- Flake8: https://pypi.org/project/flake8/
- Mypy: https://pypi.org/project/mypy/