Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Run cleanup functions synchronously if the event loop is stopping #87

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

puddly
Copy link
Contributor

@puddly puddly commented Aug 24, 2022

Functions called on connection loss can fail to run in the executor if the event loop is shutting down at the same time:

2022-08-24 19:07:05.408 MacBook.local asyncio ERROR Task exception was never retrieved
future: <Task finished name='Task-9' coro=<SerialTransport._call_connection_lost() done, defined at ~/Projects/pyserial-asyncio/serial_asyncio/__init__.py:398> exception=RuntimeError('cannot schedule new futures after interpreter shutdown')>
Traceback (most recent call last):
  File "~/Projects/pyserial-asyncio/serial_asyncio/__init__.py", line 408, in _call_connection_lost
    await self._loop.run_in_executor(None, self._serial.flush)
  File "/usr/local/Cellar/[email protected]/3.9.13_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/asyncio/base_events.py", line 819, in run_in_executor
    executor.submit(func, *args), loop=self)
  File "/usr/local/Cellar/[email protected]/3.9.13_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/concurrent/futures/thread.py", line 169, in submit
    raise RuntimeError('cannot schedule new futures after '
RuntimeError: cannot schedule new futures after interpreter shutdown

I think it's better to call them synchronously and risk potentially stalling the nearly-stopped event loop than to not call them at all.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant