summary refs log tree commit diff
path: root/issues/CI-CD/profiling-flask.gmi
blob: 2d0c53955aed83f49ba54352748eab8ad826e098 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# Profiling GN

Use this simple structure:

```
from werkzeug.middleware.profiler import ProfilerMiddleware


app = Flask(__name__)
app.config["PROFILE"] = True
app.wsgi_app = ProfilerMiddleware(
    app.wsgi_app,
    restrictions=[40, "main"],
    profile_dir="profiler_dump",
    filename_format="{time:.0f}-{method}-{path}-{elapsed:.0f}ms.prof",
)
```


You can use gprof2dot to visualise the profile

```
guix shell gprof2dot -- gprof2dot -f pstats 1753202013-GET-show_trait-37931ms.prof > 1753202013-GET-show_trait-37931ms.prof.dot
guix shell xdot -- xdot 1753202013-GET-show_trait-37931ms.prof.dot
```

Or snakeviz to visualize it:


```
scp genenetwork:/home/bonfacem/profiling/1753202013-GET-show_trait-37931ms.prof /tmp/test
snakeviz 1753202013-GET-show_trait-37931ms.prof
```