Undocumented issue: Open system call blocks on named pipes (and a feature request)

Chris Angelico rosuav at gmail.com
Fri Dec 28 16:04:17 EST 2018

On Sat, Dec 29, 2018 at 7:21 AM Daniel Ojalvo <D.Ojalvo at f5.com> wrote:
> Thank you for the advice!
> I haven't used the opener argument before, but I'll keep it for future reference. I think it's still a little kludge-y, but it works.

It has a very similar effect to what you were proposing, but still
works within the normal open() ecosystem. Its main benefit is that it
works on existing Pythons, whereas any idea proposed today can't get
into 3.7 and maybe not even 3.8.

> I agree that previous behavior shouldn't be changed, but I would suggest updating the documentation to point it out as a footnote. The current behavior is correct just unclear. Most people just learning about the open command wouldn't have this expectation.

That's what I'm not sure about. Do people really have an expectation
of nonblocking behaviour?

> I came across the issue when I had a program that would open up all the files in a directory to read a few bytes from the beginning. My concern would be someone just making a named pipe over a file that a program would open. Arguably, anyone affected by that would be shooting themselves in the foot to begin with, but I think there are "security" concerns because someone could cause a bit of mischief that would be difficult to diagnose.

What happens if someone has a subdirectory in there? To be resilient
against everything you might come across, you probably need to check

> That all being said, I think I would like to put in a feature request for a non-blocking option. How should I go about doing so?

Hmm, there are a few options. If you reckon it's pretty easy, you
could just go straight to a GitHub pull request, and discuss it there.
Or you could open a bugs.python.org tracker issue and hope someone
else does the coding. Alternatively, you could find out who else
supports the idea by posting to the python-ideas at python.org mailing

Of those, I think posting to python-ideas is possibly the best, as
there will likely be some bikeshedding about the name and such.


More information about the Python-list mailing list