getsentry / getsentry/sentry-python

Auto-isolate asyncio tasks if event loop is running

Đang mở
#5,379 3 bình luận 0 reaction 0 người được giao Xem trên GitHub
Better Async Support Improvement Integration: Asyncio Python
Ngôn ngữ chính
Python
Star
2.2k
Fork
669
Merge trung bình
1 ngày 1 giờ
Pull request đã merge (30 ngày)
213

Mô tả

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](https://github.com/getsentry/sentry-python/issues/5352).

### 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).

1. Take the isolation scope logic out of `AsyncioIntegration` into its own integration and make it auto-enabled (best effort, if there is no event loop we can't do anything).
2. Make `AsyncioIntegration` auto-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.
3. ???

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?

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.