def _run_task_inner_function(task: Task, job: Job) -> Tuple[Job, bool]: task_succeeded = False try: job.variables = task.inner_function(**job.variables) task_succeeded = True except Exception as e: logger.debug(f"Failed job: {job}. Error: {e}.") task.exception_handler(e, job) finally: return job, task_succeeded
def _create_job_from_raw_job(self, response) -> Job: return Job(key=response.key, _type=response.type, workflow_instance_key=response.workflowInstanceKey, bpmn_process_id=response.bpmnProcessId, workflow_definition_version=response.workflowDefinitionVersion, workflow_key=response.workflowKey, element_id=response.elementId, element_instance_key=response.elementInstanceKey, custom_headers=json.loads(response.customHeaders), worker=response.worker, retries=response.retries, deadline=response.deadline, variables=json.loads(response.variables), zeebe_adapter=self)
def random_job(task: Task = task_builder.build_task( lambda x: {"x": x}, TaskConfig("test", lambda: None, 10000, 32, 32, [], False, "", [], [])), zeebe_adapter: ZeebeAdapter = None) -> Job: return Job(_type=task.type, key=randint(0, RANDOM_RANGE), worker=str(uuid4()), retries=randint(0, 10), process_instance_key=randint(0, RANDOM_RANGE), bpmn_process_id=str(uuid4()), process_definition_version=randint(0, 100), process_definition_key=randint(0, RANDOM_RANGE), element_id=str(uuid4()), element_instance_key=randint(0, RANDOM_RANGE), variables={}, custom_headers={}, deadline=randint(0, RANDOM_RANGE), zeebe_adapter=zeebe_adapter)
def random_job(task: Task = Task(task_type="test", task_handler=lambda x: {"x": x}, exception_handler=lambda x, y, z: x), zeebe_adapter: ZeebeAdapter = None) -> Job: return Job(_type=task.type, key=randint(0, RANDOM_RANGE), worker=str(uuid4()), retries=randint(0, 10), workflow_instance_key=randint(0, RANDOM_RANGE), bpmn_process_id=str(uuid4()), workflow_definition_version=randint(0, 100), workflow_key=randint(0, RANDOM_RANGE), element_id=str(uuid4()), element_instance_key=randint(0, RANDOM_RANGE), variables={}, custom_headers={}, deadline=randint(0, RANDOM_RANGE), zeebe_adapter=zeebe_adapter)
def handle_job(job: Job, status_on_deactivate: JobStatus, context): if job.status != JobStatus.Running: context.set_code(grpc.StatusCode.FAILED_PRECONDITION) else: job.status = status_on_deactivate return context
def default_exception_handler(e: Exception, job: Job) -> None: logger.warning(f"Task type: {job.type} - failed job {job}. Error: {e}.") job.set_failure_status(f"Failed job. Error: {e}")