code: def _redis_wrap(job_info, func, *args, **kwargs):
      
      status_changer = partial(_status_change, job_info['id'])
      kwargs['moi_update_status'] = status_changer
      kwargs['moi_context'] = job_info['context']
      kwargs['moi_parent_id'] = job_info['parent']
  
      job_info['status'] = 'Running'
      job_info['date_start'] = str(datetime.now())
  
      _deposit_payload(job_info)
  
      caught = None
      try:
          result = func(*args, **kwargs)
          job_info['status'] = 'Success'
      except Exception as e:
          result = traceback.format_exception(*sys.exc_info())
          job_info['status'] = 'Failed'
          caught = e
      finally:
          job_info['result'] = result
          job_info['date_end'] = str(datetime.now())
          _deposit_payload(job_info)
  
      if caught is None:
          return result
      else:
          raise caught
docs: Wrap something to compute
  
      The function that will have available, via kwargs['moi_update_status'], a
      method to modify the job status. This method can be used within the
      executing function by:
  
          old_status = kwargs['moi_update_status']('my new status')
  
      Parameters
      ----------
      job_info : dict
         Redis job details
      func : function
          A function to execute. This function must accept ``**kwargs``, and will
          have ``moi_update_status``, ``moi_context`` and ``moi_parent_id``
          available.
  
      Raises
      ------
      Exception
          If the function called raises, that exception is propagated.
  
      Returns
      -------
      Anything the function executed returns.