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
|
#### Utilisation des tests unitaires pour initialiser la base de dev
|
||||||
On peut aussi utiliser les tests unitaires pour mettre la base
|
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
|
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:
|
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
|
migration, utiliser les commandes `flask db history`et `flask db stamp`pour se
|
||||||
positionner à la bonne étape.
|
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
|
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
|
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()
|
@app.cli.command()
|
||||||
def dumphelp():
|
def dumphelp():
|
||||||
recursive_help(app.cli)
|
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