Auto-isolate asyncio tasks if event loop is running
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 35/100
Rechercherichtung
Lies zunächst die bestehende AsyncioIntegration und ihr Verhalten im Hinblick auf die Isolierung des Scopes, und vergleiche dann die vorgeschlagenen Designs zur automatischen Aktivierung. Prüfe, wie ein laufender Event Loop gepatcht wird, ob wiederholtes Patchen möglich ist und wie bestehende Nutzer von AsyncioIntegration betroffen wären. Als erledigt gilt die Aufgabe, wenn die Task-Isolierung automatisch funktioniert, während zusätzliche Funktionen weiterhin ausdrücklich opt-in bleiben und Fälle ohne Event Loop graceful fehlschlagen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Currently, the opt-in AsyncioIntegration is responsible for multiple things, one of them being providing proper scope isolation in asyncio tasks. Without this functionality, people are running into different types of hard-to-diagnose scope bleed issues, like here.
Goal
- Automatically patch the current event loop to isolate tasks in their isolation scopes, if there is an event loop running
- For additional functionality (creating task spans, etc.), explicit opt-in should still be required from users
How to do this
Different ways to do this, each with its own caveats (e.g. introducing breaking changes).
- Take the isolation scope logic out of
AsyncioIntegrationinto its own integration and make it auto-enabled (best effort, if there is no event loop we can't do anything). - Make
AsyncioIntegrationauto-enabled, and change the additional functions it's providing (like task spans) to be opt-in. Also, make it fail gracefully if there is no event loop to patch. - ???
When picking an option, consider:
- Will this break behavior for existing users using the
AsyncioIntegration? - Is there a risk of double-patching the event loop?
- Vorherrschende Sprache
- Python
- Sterne
- 2.2k
- Forks
- 672
- Ø Merge
- 22 Std. 47 Min.
- Gemergte PRs (30 T.)
- 224
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus getsentry/sentry-python
-
Python
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
getsentry/sentry-python#7569 · 1 Kommentar ·
-
Python
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 85/100
getsentry/sentry-python#7568 · 2 Kommentare ·
-
Python
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
getsentry/sentry-python#7567 · 1 Kommentar ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
getsentry/sentry-python#7543 · 2 Kommentare · 1 zugewiesene Person ·
-
Python
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
getsentry/sentry-python#6992 · 1 Kommentar ·
Alle Issues in getsentry/sentry-python
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
anthropics/skills#1811 · 1 Kommentar ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
speaches-ai/speaches#678 ·
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
datalayer/mcp-compose#42 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
conda-forge/spacy-feedstock#177 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
UKGovernmentBEIS/inspect_evals#2523 ·