You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Traceback (most recent call last):
File "/usr/lib/python3.5/asyncio/selector_events.py", line 234, in add_reader
key = self._selector.get_key(fd)
File "/usr/lib/python3.5/selectors.py", line 191, in get_key
raise KeyError("{!r} is not registered".format(fileobj)) from None
KeyError: '0 is not registered'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "./stdin_issue.py", line 41, in <module>
main_loop.run_until_complete(main(main_loop))
File "/usr/lib/python3.5/asyncio/base_events.py", line 387, in run_until_complete
return future.result()
File "/usr/lib/python3.5/asyncio/futures.py", line 274, in result
raise self._exception
File "/usr/lib/python3.5/asyncio/tasks.py", line 239, in _step
result = coro.send(None)
File "./stdin_issue.py", line 34, in main
loop.add_reader(fileno, _reader)
File "/usr/lib/python3.5/asyncio/selector_events.py", line 237, in add_reader
(handle, None))
File "/usr/lib/python3.5/selectors.py", line 411, in register
self._epoll.register(key.fd, epoll_events)
PermissionError: [Errno 1] Operation not permitted
But the:
echo"Hello"| ./stdin_issue.py
Is working well.
I was already tried this with the select.select directly, and it working:
def using_select():
files = [sys.stdin.fileno()]
while True:
readables, _, errors = select(files, [], files)
if errors:
print('ERROR:', errors)
return
if readables:
for f in readables:
chunk = os.read(f, 1024)
if not chunk:
return
print(chunk.decode(), end='')
If fd is a regular file it is not supported well by all select/poll/epoll.
Registration may succeed but the data is marked as "already ready for reading".
Not sure if we should do anything.
The situation may be changed after eventual providing asyncio API for files (there is no actual work for it yet).
Activity
pylover commentedon Mar 3, 2017
Assume this simple script for reading from stdin:
When I run it by:
I get:
But the:
Is working well.
I was already tried this with the
select.selectdirectly, and it working:defbk commentedon Jun 10, 2019
Checked latest master (c879ff2), 3.8 - 3.5 branches - can not reproduce.
OS - macOS
asvetlov commentedon Jun 10, 2019
If fd is a regular file it is not supported well by all select/poll/epoll.
Registration may succeed but the data is marked as "already ready for reading".
Not sure if we should do anything.
The situation may be changed after eventual providing asyncio API for files (there is no actual work for it yet).
kumaraditya303 commentedon May 20, 2022
As Andrew explained, there isn't something to be fixed here as using a blocking fd is not supported hence closing.
allisonkarlitskaya commentedon Oct 30, 2022
Also happens for
/dev/null.gvanrossum commentedon Oct 30, 2022
Yeah, /dev/null is more like a regular file.