From 9e7abecfb42fec6ee200b37920b8949e8fbcb75d Mon Sep 17 00:00:00 2001 From: Albert Lee Date: Wed, 3 Feb 2016 22:08:10 -0500 Subject: [PATCH] Use select.select to wait for output again Signed-off-by: Albert Lee --- resources/site-packages/pulsar/daemon.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/resources/site-packages/pulsar/daemon.py b/resources/site-packages/pulsar/daemon.py index e6b4d2caf..d7891e8bf 100644 --- a/resources/site-packages/pulsar/daemon.py +++ b/resources/site-packages/pulsar/daemon.py @@ -137,15 +137,17 @@ def pulsard_thread(monitor): # read. We count on the fact that Pulsar daemon flushes its log # output on \n, creating a pretty clean output import fcntl + import select fd = proc.stdout.fileno() fl = fcntl.fcntl(fd, fcntl.F_GETFL) fcntl.fcntl(fd, fcntl.F_SETFL, fl | os.O_NONBLOCK) while proc.poll() is None: - try: - log.info(proc.stdout.readline()) - continue - except IOError: - time.sleep(1) # nothing to read, sleep + to_read, _, _ = select.select([proc.stdout], [], []) + for obj in to_read: + line = obj.readline() + if line == "": # write end is closed + break + log.info(line) if proc.returncode == 0 or xbmc.abortRequested: break