forked from ScoDoc/ScoDoc
added profiling command
This commit is contained in:
parent
3e1136a077
commit
51bd6ba141
22
README.md
22
README.md
@ -107,7 +107,7 @@ Ou avec couverture (`pip install pytest-cov`)
|
||||
#### Utilisation des tests unitaires pour initialiser la base de dev
|
||||
On peut aussi utiliser les tests unitaires pour mettre la base
|
||||
de données de développement dans un état connu, par exemple pour éviter de
|
||||
recréer à la main étudianst et semestres quand on développe.
|
||||
recréer à la main étudiants et semestres quand on développe.
|
||||
|
||||
Il suffit de positionner une variable d'environnement indiquant la BD utilisée par les tests:
|
||||
|
||||
@ -151,7 +151,25 @@ Si la base utilisée pour les dev n'est plus en phase avec les scripts de
|
||||
migration, utiliser les commandes `flask db history`et `flask db stamp`pour se
|
||||
positionner à la bonne étape.
|
||||
|
||||
# Paquet debian 11
|
||||
### Profiling
|
||||
|
||||
Sur une machine de DEV, lancer
|
||||
|
||||
flask profile --host 0.0.0.0 --length 32 --profile-dir /opt/scodoc-data
|
||||
|
||||
le fichier `.prof` sera alors écrit dans `/opt/scoidoc-data` (on peut aussi utiliser `/tmp`).
|
||||
|
||||
Pour la visualisation, [snakeviz](https://jiffyclub.github.io/snakeviz/) est bien:
|
||||
|
||||
pip install snakeviz
|
||||
|
||||
puis
|
||||
|
||||
snakeviz -s --hostname 0.0.0.0 -p 5555 /opt/scodoc-data/GET.ScoDoc......prof
|
||||
|
||||
|
||||
|
||||
# Paquet Debian 11
|
||||
|
||||
Les scripts associés au paquet Debian (.deb) sont dans `tools/debian`. Le plus
|
||||
important est `postinst`qui se charge de configurer le système (install ou
|
||||
|
24
scodoc.py
24
scodoc.py
@ -329,3 +329,27 @@ def recursive_help(cmd, parent=None):
|
||||
@app.cli.command()
|
||||
def dumphelp():
|
||||
recursive_help(app.cli)
|
||||
|
||||
|
||||
@app.cli.command()
|
||||
@click.option("-h", "--host", default="127.0.0.1", help="The interface to bind to.")
|
||||
@click.option("-p", "--port", default=5000, help="The port to bind to.")
|
||||
@click.option(
|
||||
"--length",
|
||||
default=25,
|
||||
help="Number of functions to include in the profiler report.",
|
||||
)
|
||||
@click.option(
|
||||
"--profile-dir", default=None, help="Directory where profiler data files are saved."
|
||||
)
|
||||
def profile(host, port, length, profile_dir):
|
||||
"""Start the application under the code profiler."""
|
||||
from werkzeug.middleware.profiler import ProfilerMiddleware
|
||||
from werkzeug.serving import run_simple
|
||||
|
||||
app.wsgi_app = ProfilerMiddleware(
|
||||
app.wsgi_app, restrictions=[length], profile_dir=profile_dir
|
||||
)
|
||||
run_simple(
|
||||
host, port, app, use_debugger=False
|
||||
) # use run_simple instead of app.run()
|
||||
|
Loading…
Reference in New Issue
Block a user