<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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