Warning
This document is for an in-development version of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.
Source code for tool_shed.galaxy_install.tool_dependencies.recipe.asynchronous_reader
import logging
import threading
log = logging.getLogger(__name__)
[docs]class AsynchronousReader(threading.Thread):
"""
A helper class to implement asynchronous reading of a stream in a separate thread. Read lines are pushed
onto a queue to be consumed in another thread.
"""
[docs] def __init__(self, fd, queue):
threading.Thread.__init__(self)
self._fd = fd
self._queue = queue
self.lines = []
[docs] def run(self):
"""Read lines and put them on the queue."""
thread_lock = threading.Lock()
thread_lock.acquire()
for line in iter(self._fd.readline, ''):
stripped_line = line.rstrip()
self.lines.append(stripped_line)
self._queue.put(stripped_line)
thread_lock.release()
[docs] def installation_complete(self):
"""Make sure there is more installation and compilation logging content expected."""
return not self.is_alive() and self._queue.empty()