Source code for botlib.runner

# mad/runner.py
#
#

""" threaded loop to run tasks on. """

from .task import Task

import logging
import time

[docs]class Runner(Task):
[docs] def run(self): self.name = self.kwargs.get("name", "") or "Runner" self.setName(self.name) self._state.status = "running" self._connected.wait() while self._state.status: _func, args = self._queue.get() self._counter.events += 1 if not self._state.status or not _func: break try: self._state.event = args[0] except IndexError: pass self.setName(self.kwargs.get("name", self.name)) self._begin = time.time() try: self._result = _func(*args) except OSError as ex: self._state.status = str(ex) self._last = time.time() try: args[0].ready() except: pass self.ready() return self._result