def call_wrapper(): try: yield from multipart.get_data(\ self.node.chord_engine, data_key, data_callback,\ path=path, ordered=True) except Exception as e: log.exception("multipart.get_data(..)") data_callback.exception = e data_callback.notify_finished(False)
def _send_get_data(data_key, significant_bits, path, data_rw): if log.isEnabledFor(logging.DEBUG): log.debug(\ "Sending GetData: key=[{}], significant_bits=[{}], path=[{}]."\ .format(mbase32.encode(data_key), significant_bits, path)) try: if significant_bits: future = asyncio.async(\ node.chord_engine.tasks.send_find_key(\ data_key, significant_bits), loop=node.loop) yield from asyncio.wait_for(future, 15.0, loop=node.loop) ct_data_rw = future.result() data_key = ct_data_rw.data_key if not data_key: data_rw.data = b"Key Not Found" data_rw.version = -1 data_rw.data_queue.put(None) return if log.isEnabledFor(logging.INFO): log.info("Found key=[{}].".format(mbase32.encode(data_key))) data_rw.data_key = bytes(data_key) data_rw.data_queue.put(None) return # future = asyncio.async(\ # node.chord_engine.tasks.send_get_data(data_key),\ # loop=node.loop) # # yield from asyncio.wait_for(future, 15.0, loop=node.loop) # # ct_data_rw = future.result() data_callback = Downloader(data_rw) r = yield from multipart.get_data(\ node.chord_engine, data_key, data_callback, path=path, ordered=True) if r is False: raise asyncio.TimeoutError() except asyncio.TimeoutError: data_rw.timed_out = True except: log.exception("send_get_data(..)") data_rw.exception = True data_rw.data_queue.put(None)
def _start_version_poller(self): yield from self.engine.protocol_ready.wait() while self._running: data_rw = multipart.BufferingDataCallback() r =\ yield from\ multipart.get_data(self.engine, self._data_key,\ data_callback=data_rw, path=self._path) if data_rw.data: if data_rw.version: data = data_rw.data.decode() p0 = data.find('<span id="version_number">') p0 += 26 p1 = data.find("</span>", p0) self.latest_version_number = data[p0:p1] self.latest_version_data = data if log.isEnabledFor(logging.INFO): log.info("Found latest_version_number=[{}]"\ " (data_rw.version=[{}])."\ .format(\ self.latest_version_number,\ data_rw.version)) else: if log.isEnabledFor(logging.INFO): log.info("Found invalid latest_version record:"\ " data_rw.version=[{}], len(data)=[{}]."\ .format(data_rw.version, len(data_rw.data))) delay = 5 * 60 else: log.info("Couldn't find latest_version in network.") delay = 60 yield from asyncio.sleep(delay, loop=self.loop)
def _start_version_poller(self): yield from self.engine.protocol_ready.wait() while self._running: data_rw = multipart.BufferingDataCallback() r =\ yield from\ multipart.get_data(self.engine, self._data_key,\ data_callback=data_rw, path=self._path) if data_rw.data: if data_rw.version: data = data_rw.data.decode() p0 = data.find('<span id="version_number">') p0 += 26 p1 = data.find("</span>", p0) self.latest_version_number = data[p0:p1] self.latest_version_data = data if log.isEnabledFor(logging.INFO): log.info("Found latest_version_number=[{}]"\ " (data_rw.version=[{}])."\ .format(\ self.latest_version_number,\ data_rw.version)) else: if log.isEnabledFor(logging.INFO): log.info("Found invalid latest_version record:"\ " data_rw.version=[{}], len(data)=[{}]."\ .format(data_rw.version, len(data_rw.data))) delay = 5*60 else: log.info("Couldn't find latest_version in network.") delay = 60 yield from asyncio.sleep(delay, loop=self.loop)