Unbuffered mode

Hamish Allan hamish at gmail.com
Wed Feb 13 12:55:39 EST 2008


Sorry to reply to myself again, but I think I now know the answer and
wish to post it for the archives.

Python run without '-i', if not sys.stdin.isatty(), expects to read a
whole script before doing anything else (presuming to be reading it
from a pipe). Therefore syntax errors are fatal, but otherwise nothing
is executed until EOF.

So the answer to my question is to run:

$ ssh localhost python -ui

Best wishes,
Hamish

On Feb 13, 2008 4:20 PM, Hamish Allan <hamish at gmail.com> wrote:
> Further to my query about trying to make Python run unbuffered, I have
> discovered that a SyntaxError seems to cause Python to close its SSH
> connection:
>
> $ ssh localhost python -u
> ,
>   File "<stdin>", line 1
>     ,
>     ^
> SyntaxError: invalid syntax
> $
>
> Whereas a different sort of error (e.g. NameError) does not:
>
> $ ssh localhost python -u
> pront
> [^D]
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> NameError: name 'pront' is not defined
> $
>
> Can anyone tell me why?!
>
> Thanks,
> Hamish
>
>
> On Feb 13, 2008 1:12 AM, Hamish Allan <hamish at gmail.com> wrote:
> > Hi,
> >
> > The man page for python says:
> >
> > "-u     Force stdin, stdout and stderr to be totally unbuffered."
> >
> > However, when I try:
> >
> > $ ssh localhost python -u
> > print 'hello, world'
> > [^D]
> > hello, world
> > $
> >
> > Nothing happens until I send that EOF. I'm pretty sure it's not SSH
> > that's buffering because when I try:
> >
> > $ ssh localhost bash
> > echo 'hello, world'
> > hello, world
> > [^D]
> > $
> >
> > The 'hello, world' comes back immediately (I don't need to send the EOF).
> >
> > I've also tried:
> >
> > $ ssh localhost python -u
> > import sys
> > sys.stdout.write('hello, world\n')
> > sys.stdout.flush()
> > [^D]
> > hello, world
> > $
> >
> > Again, nothing happens until I send the EOF. How can I get Python to
> > run over SSH unbuffered?
> >
> > Thanks,
> > Hamish
> >
>



More information about the Python-list mailing list