docs: def job_run(self, callback, parameters=None):
  		"""
  		Add a job and run it once immediately.
  
  		:param function callback: The function to run asynchronously.
  		:param parameters: The parameters to be provided to the callback.
  		:type parameters: list, tuple
  		:return: The job id.
  		:rtype: :py:class:`uuid.UUID`
  		"""
  		if not self._thread_running.is_set():
  			raise RuntimeError('the JobManager is not running')
  		parameters = (parameters or ())
  		if not isinstance(parameters, (list, tuple)):
  			parameters = (parameters,)
  		job_desc = {}
  		job_desc['job'] = JobRun(callback, parameters)
  		job_desc['last_run'] = None
  		job_desc['run_every'] = datetime.timedelta(0, 1)
  		job_desc['callback'] = callback
  		job_desc['parameters'] = parameters
  		job_desc['enabled'] = True
  		job_desc['tolerate_exceptions'] = False
  		job_desc['run_count'] = 0
  		job_desc['expiration'] = 0
  		job_id = uuid.uuid4()
  		self.logger.info('adding new job with id: ' + str(job_id) + ' and callback function: ' + callback.__name__)
  		with self._job_lock:
  			self._jobs[job_id] = job_desc
  			self._job_execute(job_id)
  		return job_id