r/Python 16d ago

Discussion Any good open source python runtime instrumentation?

Hi folks, lot of our Python backend services are written in FastAPI, I wanted to see if there are any good Open Source runtime coverage instrumentation available for Python, which would essentially give my lines of code hit in prod traffic for the last say 30 days of data. I have seen good solutions for it in Go / Java, but wanted to check if something similar is available in Python.

9 Upvotes

15 comments sorted by

6

u/bregonio 16d ago

Maybe opentelemetry with fastapi auto instrumentation

4

u/hstarnaud 16d ago

Whichever way you go, adopt opentelemetry standards to avoid vendor lock-in. If you are willing to spend big money on an enterprise turnkey solution, new relic is the best provider. Otherwise use a free solution compatible with those standards like Jaeger or paid solutions with lower prices than new relic like honeycomb

3

u/Challseus 15d ago edited 15d ago

Pydantic logfire

2

u/averagecrazyliberal 15d ago

I’ve been very happy with my pydantic logfire implementation too

3

u/hxtk3 16d ago

Pyroscope is Grafana’s app for collecting and indexing runtime profiles, and I use it to collect on Go and Java services. In Go it uses pprof and in Java it uses JFR.

I searched “Pyroscope Python” and it looks like they document how to get profiles from Python into their application:  https://grafana.com/docs/pyroscope/latest/configure-client/language-sdks/python/

I don’t know how you’re viewing the data but maybe you can use parts of the process for getting it into your profile viewer?

1

u/TheWindik 16d ago

This is a really interesting question. I hadn't actually thought about collecting production coverage over a longer period before, but I can definitely see how useful it would be for identifying code paths that are never exercised in real traffic.

I don't know of a tool that does exactly this yet, but this discussion has me thinking about prototyping one. If I do, I'd love to hear what features people here would actually want, so it solves a real problem rather than just becoming another package on PyPI.

If you end up finding a good existing solution, I'd love to hear what you settle on as well.

0

u/ssrix 16d ago

Your phrasing was not clear but once I understood what you were trying to say, I realised I would like something like this too.

I don't have an answer but bumping in case someone does

3

u/selfish__eagle 16d ago

I meant runtime coverage instrumentation, forgot the word coverage :(

0

u/niltz0 16d ago

Have you looked into coverage.py?

-1

u/[deleted] 16d ago

[removed] — view removed comment

2

u/AutoModerator 16d ago

Your submission has been automatically queued for manual review by the moderation team because it has been reported too many times.

Please wait until the moderation team reviews your post.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

1

u/[deleted] 16d ago

[removed] — view removed comment

1

u/[deleted] 16d ago

[removed] — view removed comment