Improved structure

- Flask app factory instead of initializing `app` variable
- Gunicorn for production server
- Makefile: python3 -m
- .gitignore: instance dir
This commit is contained in:
DarkCat09 2023-02-15 16:00:30 +04:00
parent 058bcd13e5
commit 9ead8a457c
6 changed files with 30 additions and 18 deletions

1
.gitignore vendored
View file

@ -2,6 +2,7 @@ __pycache__/
.mypy_cache/
venv/
instance/
.vscode/
.idea/

View file

@ -1,8 +1,8 @@
dev:
FLASK_DEBUG="true" flask run
FLASK_DEBUG="true" python3 -m flask run
prod:
flask run
python3 -m gunicorn -w 4 "app:create_app()"
format:
python3 -m autopep8 -r --in-place flaskapp/

2
app.py
View file

@ -1 +1 @@
from flaskapp.app import app
from flaskapp.app import create_app

View file

@ -1,3 +0,0 @@
"""Init file for the module"""
from .app import app

View file

@ -1,20 +1,33 @@
"""Flask web application
main script"""
"""Flask web application main script"""
import os
import secrets
from pathlib import Path
from flask import Flask
def create_app() -> Flask:
"""Flask app factory function"""
root = Path('..')
static = str(root / 'static')
tmpl = str(root / 'templates')
app = Flask(
'${REPO_NAME_SNAKE}',
__name__,
static_folder=static,
template_folder=tmpl,
instance_relative_config=True,
)
app.config['SECRET_KEY'] = os.getenv(
'SECRET_KEY',
secrets.token_hex(32),
)
if __name__ == '__main__':
app.run()
try:
os.makedirs(app.instance_path)
except OSError:
pass
return app

View file

@ -1 +1,2 @@
flask==2.2.2
gunicorn==20.1.0