'Called when the process is started.  Pushes the result onto the
results queue. We also remove the host from the blocked hosts list, to
signify that they are ready for their next task.'

def run(self):

    if HAS_PYCRYPTO_ATFORK:
        atfork()
    try:
        display.debug(('running    TaskExecutor()    for    %s/%s' % (self._host, self._task)))
        executor_result = TaskExecutor(self._host, self._task, self._task_vars, self._play_context, self._new_stdin, self._loader, self._shared_loader_obj, self._rslt_q).run()
        display.debug(('done    running    TaskExecutor()    for    %s/%s    [%s]' % (self._host, self._task, self._task._uuid)))
        self._host.vars = dict()
        self._host.groups = []
        task_result = TaskResult(self._host.name, self._task._uuid, executor_result, task_fields=self._task.dump_attrs())
        display.debug(('sending    task    result    for    task    %s' % self._task._uuid))
        self._rslt_q.put(task_result)
        display.debug(('done    sending    task    result    for    task    %s' % self._task._uuid))
    except AnsibleConnectionFailure:
        self._host.vars = dict()
        self._host.groups = []
        task_result = TaskResult(self._host.name, self._task._uuid, dict(unreachable=True), task_fields=self._task.dump_attrs())
        self._rslt_q.put(task_result, block=False)
    except Exception as e:
        if ((not isinstance(e, (IOError, EOFError, KeyboardInterrupt, SystemExit))) or isinstance(e, TemplateNotFound)):
            try:
                self._host.vars = dict()
                self._host.groups = []
                task_result = TaskResult(self._host.name, self._task._uuid, dict(failed=True, exception=to_text(traceback.format_exc()), stdout=''), task_fields=self._task.dump_attrs())
                self._rslt_q.put(task_result, block=False)
            except:
                display.debug((u'WORKER    EXCEPTION:    %s' % to_text(e)))
                display.debug((u'WORKER    TRACEBACK:    %s' % to_text(traceback.format_exc())))
    display.debug('WORKER    PROCESS    EXITING')
