- edited description
`returncode` is always None.
Issue #29
resolved
Hi, I find new problem. Try running this code:
from sarge import Feeder, run, Capture
# import logging
# from sarge import logger
# l = logger
# l.setLevel(logging.DEBUG)
# l.addHandler(logging.StreamHandler())
feeder = Feeder()
cin = Capture(buffer_size=1)
cout = Capture(buffer_size=1)
pipe = run('cat | python -c "while 1: import time; input(); time.sleep(0.5); z = locals().setdefault(\'z\', 1); print(z); z += 1"', input=feeder, stdout=cin, stderr=cout, async=True)
pipe.wait_events()
feeder.feed('Hello\n')
feeder.feed(b'Goodbye\n')
feeder.feed('Good!bye\n')
feeder.feed(b'Goodbye\n')
feeder.close()
while pipe.returncode is None:
# print(cin._done, cout._done, [x.poll() for x in pipe.processes])
for msg in pipe.stdout:
print(msg)
for msg in pipe.stderr:
print('e!:' + msg)
print(pipe.stdout.text, pipe.stderr.text)
This code will work infinitely.
The reson of this is returncode
property organization. I forgot about poll()
.
I thin need add .poll()
to Pipline class, and use while pipleine.poll() in None:
in docs.
What do you think about this?
Comments (4)
-
reporter -
reporter - edited description
-
reporter -
repo owner - changed status to resolved
Should be fixed by 3c5273c.
- Log in to comment