Auto-isolate asyncio tasks if event loop is running
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 5/5
- Tempo estimado
- Mais de uma semana
- Facilidade para iniciantes
- 35/100
Direção de pesquisa
Comece lendo a AsyncioIntegration existente e seu comportamento de isolamento de escopo; em seguida, compare os designs propostos de ativação automática. Verifique como um event loop em execução é instrumentado, se é possível aplicar o patch repetidamente e como os usuários existentes de AsyncioIntegration seriam afetados. O trabalho estará concluído quando o isolamento de tarefas funcionar automaticamente, enquanto os recursos adicionais continuarem explicitamente opt-in e os casos sem event loop falharem de forma controlada.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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?
- Linguagem predominante
- Python
- Estrelas
- 2.2k
- Forks
- 672
- Merge médio
- 22h 47min
- PRs com merge (30d)
- 224
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de getsentry/sentry-python
-
Python
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
getsentry/sentry-python#7569 · 1 comentário ·
-
Python
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 85/100
getsentry/sentry-python#7568 · 2 comentários ·
-
Python
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
getsentry/sentry-python#7567 · 1 comentário ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
getsentry/sentry-python#7543 · 2 comentários · 1 responsável ·
-
Python
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
getsentry/sentry-python#6992 · 1 comentário ·
Todas as issues de getsentry/sentry-python
Issues semelhantes
-
bug confirmed issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
open-webui/open-webui#30750 · 1 comentário ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
-
enhancement
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
OpenwaterHealth/openmotion-bloodflow-app#604 · 1 comentário ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
-
good first issue
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 90/100