MagicStack / MagicStack/uvloop
`asyncio.get_event_loop` raises error instead of spawning new loop when no loop is running.
Nobody has claimed this yet.
- Dominant language
- Cython
- Stars
- 11.9k
- Forks
- 616
- PR merge metrics
- No merged PRs in 30d
Description
```python
>>> import uvloop, asyncio
>>> asyncio.get_event_loop()
<_UnixSelectorEventLoop running=False closed=False debug=False>
>>> uvloop.install()
>>> asyncio.get_event_loop()
Traceback (most recent call last):
File "", line 1, in
asyncio.get_event_loop()
~~~~~~~~~~~~~~~~~~~~~~^^
File "/usr/local/lib/python3.13/site-packages/uvloop/__init__.py", line 206, in get_event_loop
raise RuntimeError(
...<2 lines>...
)
RuntimeError: There is no current event loop in thread 'MainThread'.
>>>
```
As you can see in the snippet above when run on un-patched asyncio it's returning a new loop. But uvloop raises error because of the [method override](https://github.com/MagicStack/uvloop/blob/74f4c96d3fc5281b1820491d2568de771ea7851b/uvloop/__init__.py#L200) which was not there in previous version inheriting the original new loop spawning function.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the Python snippet with uvloop installed, then inspect the get_event_loop override in uvloop/__init__.py around the linked method. Compare its behavior with unpatched asyncio; the issue is done when calling asyncio.get_event_loop() without a running loop has the expected behavior in both cases.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 68/100