micropython / micropython/micropython-lib
uasyncio: KeyError in `remove_reader` (MacOS)
Open
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 2.9k
- Forks
- 1.1k
- Avg merge
- 7d 6h
- Merged PRs (30d)
- 3
Description
uasyncio version 1.2.4
I'm using it in a pretty common way:
loop = asyncio.get_event_loop()
print("* Starting Web Server at {}:{}".format(host, port))
loop.create_task(asyncio.start_server(self._handler, host, port, backlog=backlog))
if loop_forever:
loop.run_forever()
loop.close()
Sometimes (probably when connection is closed from client side) I see exception:
Traceback (most recent call last):
File "./esp_restapi.py", line 53, in <module>
File "./esp_restapi.py", line 49, in run
File "/Users/belyalov/.micropython/lib/tinyweb/server.py", line 320, in run
File "/Users/belyalov/.micropython/lib/uasyncio/core.py", line 136, in run_forever
File "/Users/belyalov/.micropython/lib/uasyncio/core.py", line 113, in run_forever
File "/Users/belyalov/.micropython/lib/uasyncio/__init__.py", line 39, in remove_reader
KeyError: 4339811008
Contributor guide
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
Start with uasyncio/init.py around remove_reader and trace how it is called from uasyncio/core.py in run_forever. Reproduce the MacOS connection-close case using the reported server pattern and uasyncio version 1.2.4. Done means the client-side close no longer raises KeyError 4339811008.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- networking
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100