Ruf sie nebenläufig statt nacheinander auf. In einem async Framework startest du alle drei mit asyncio.gather oder einer Task Group, sodass die Gesamtlatenz der langsamste Aufruf ist und nicht die Summe. Gib jedem Aufruf ein Timeout, entscheide, welche Antworten optional sind, damit du degradieren statt scheitern kannst, und cache, was stabil ist. Verträgt der Client es, gib stattdessen eine Job-ID zurück.
Warum Interviewer das fragen
Das ist eine Systemdesign-Frage in Python-Kleidern. Der Interviewer will Nebenläufigkeitsinstinkte, aber vor allem Denken in Fehlerfällen: Timeouts auf jedem Netzwerkaufruf, teilweise Degradierung und was der Nutzer sieht, wenn eine Abhängigkeit ausfällt. Kandidaten, die nur mit gather antworten und dort aufhören, haben nichts betrieben, das von Services abhängt, die ihnen nicht gehören.
So baust du deine Antwort auf
- Mach aus sequenziellen Aufrufen nebenläufige.
- Setz ein Timeout auf jeden ausgehenden Aufruf.
- Entscheide, was optional ist, und degradiere sauber.
- Ergänze Caching oder verlagere die Arbeit in einen Background-Job.
Beispielantwort
Nacheinander addieren sich diese drei Latenzen, der erste Zug ist also, sie zusammen laufen zu lassen. Mit httpx und einem async Handler sammle ich die drei Coroutines mit gather ein, oder nehme eine Task Group, damit ein Fehler die Geschwister sauber abbricht, und der Endpunkt kostet dann etwa den langsamsten Upstream statt der Summe. Jeder Aufruf bekommt ein explizites Timeout, denn der Default in den meisten Clients ist praktisch unendlich und ein hängender Socket erschöpft den Worker-Pool. Dann entscheide ich, was essenziell ist. Sind zwei von dreien Dekoration, sammle ich Exceptions ein statt zu werfen und rendere die Seite ohne sie, statt einen Fünfhunderter zu liefern, und ich emittiere eine Metrik, damit wir es trotzdem mitbekommen. Alles Stabile wird gecacht, denn selbst sechzig Sekunden Caching nehmen den Großteil der Last weg. Verträgt der Client es, ist die bessere Form, den Request anzunehmen, die Arbeit in eine Queue zu legen und eine Job-ID zum Pollen zurückzugeben, was die Upstream-Latenz komplett vom Request-Pfad nimmt.
Steht dieses Vorstellungsgespräch bald an? GhostPilot hört bei deinem Live-Call mit, erkennt die Frage in dem Moment, in dem sie gestellt wird, und bringt dir eine strukturierte Antwort in Echtzeit auf den Bildschirm. Probier es im nächsten Mock aus, oder hol dir einen $29 Session Pass, kein Abo, für den Ernstfall.
So funktioniert esNachfragen, mit denen du rechnen solltest
- Was passiert, wenn ein Upstream über dein Timeout hinaus hängt?
- Wie reichst du Cancellation durch diese Tasks durch?
- Wo würdest du einen Circuit Breaker platzieren?
Weitere Fragen für Python-Entwickler
Dein Interviewer stellt seine eigene Version davon. Kopier deine echte Stellenbeschreibung in den kostenlosen Question Predictor und bekomm die 20 Fragen, die diese Rolle am wahrscheinlichsten stellt, samt dem, worauf jede wirklich abzielt.
Meine Fragen vorhersagen