[issue34679] asyncio.add_signal_handler call fails if not on main thread
Nic Watson
report at bugs.python.org
Fri Sep 14 11:27:45 EDT 2018
New submission from Nic Watson <pythonbugs at nicwatson.org>:
Summary: essentially asyncio.add_signal_handler doesn't work when called off the main thread. One might consider this a documentation failure.
(Note: there's also a bigger issue with cleanup, which I'll submit separately)
Exception in thread Thread-1:
Traceback (most recent call last):
File "/home/nic/.pyenv/versions/3.6.4/lib/python3.6/asyncio/unix_events.py", line 91, in add_signal_handler
signal.set_wakeup_fd(self._csock.fileno())
ValueError: set_wakeup_fd only works in main thread
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/nic/.pyenv/versions/3.6.4/lib/python3.6/threading.py", line 916, in _bootstrap_inner
self.run()
File "/home/nic/.pyenv/versions/3.6.4/lib/python3.6/threading.py", line 864, in run
self._target(*self._args, **self._kwargs)
File "/home/nic/tmp/signal_event_loop_bug.py", line 14, in do_loop
loop.add_signal_handler(signal.SIGINT, mysighandler)
File "/home/nic/.pyenv/versions/3.6.4/lib/python3.6/asyncio/unix_events.py", line 93, in add_signal_handler
raise RuntimeError(str(exc))
RuntimeError: set_wakeup_fd only works in main thread
Code:
import asyncio
import signal
import threading
def mysighandler():
pass
def do_loop():
loop = asyncio.new_event_loop()
# This will fail with RuntimeError: set_wakeup_fd only works in main thread
loop.add_signal_handler(signal.SIGINT, mysighandler)
loop.close()
t = threading.Thread(target=do_loop)
t.start()
t.join()
----------
components: asyncio
messages: 325350
nosy: asvetlov, jnwatson, yselivanov
priority: normal
severity: normal
status: open
title: asyncio.add_signal_handler call fails if not on main thread
type: behavior
versions: Python 3.6, Python 3.7
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue34679>
_______________________________________
More information about the Python-bugs-list
mailing list