docs: def execute_job(job, app=Injected, task_router=Injected):
      # type: (Job, Zsl, TaskRouter) -> dict
      """Execute a job.
  
      :param job: job to execute
      :type job: Job
      :param app: service application instance, injected
      :type app: ServiceApplication
      :param task_router: task router instance, injected
      :type task_router: TaskRouter
      :return: task result
      :rtype: dict
      """
  
      app.logger.info("Job fetched, preparing the task '{0}'.".format(job.path))
  
      task, task_callable = task_router.route(job.path)
      jc = JobContext(job, task, task_callable)
  
      app.logger.info("Executing task.")
      result = jc.task_callable(jc.task_data)
  
      app.logger.info("Task {0} executed successfully.".format(job.path))
  
      return {'task_name': job.path, 'data': result}