diff --git a/arkindex_worker/worker/__init__.py b/arkindex_worker/worker/__init__.py index 2eba022973a4de72c3068868f8ae0800c9cbb926..4c1d21701030e09bd744d8e3e17badeac4728baf 100644 --- a/arkindex_worker/worker/__init__.py +++ b/arkindex_worker/worker/__init__.py @@ -99,16 +99,16 @@ class ElementsWorker( logger.info(f"Processing {element} ({i}/{count})") # Report start of process, run process, then report end of process - self.update_activity(element, ActivityState.Started) + self.update_activity(element.id, ActivityState.Started) self.process_element(element) - self.update_activity(element, ActivityState.Processed) + self.update_activity(element.id, ActivityState.Processed) except ErrorResponse as e: failed += 1 logger.warning( f"An API error occurred while processing element {element_id}: {e.title} - {e.content}", exc_info=e if self.args.verbose else None, ) - self.update_activity(element, ActivityState.Error) + self.update_activity(element_id, ActivityState.Error) self.report.error(element_id, e) except Exception as e: failed += 1 @@ -116,7 +116,7 @@ class ElementsWorker( f"Failed running worker on element {element_id}: {e}", exc_info=e if self.args.verbose else None, ) - self.update_activity(element, ActivityState.Error) + self.update_activity(element_id, ActivityState.Error) self.report.error(element_id, e) # Save report as local artifact @@ -134,14 +134,14 @@ class ElementsWorker( def process_element(self, element): """Override this method to analyze an Arkindex element from the provided list""" - def update_activity(self, element, state): + def update_activity(self, element_id, state): """ Update worker activity for this element This method should not raise a runtime exception, but simply warn users """ - assert element and isinstance( - element, Element - ), "element shouldn't be null and should be of type Element" + assert element_id and isinstance( + element_id, str + ), "element_id shouldn't be null and should be of type str" assert isinstance(state, ActivityState), "state should be an ActivityState" if not self.features.get("workers_activity"): @@ -157,17 +157,17 @@ class ElementsWorker( "UpdateWorkerActivity", id=self.worker_version_id, body={ - "element_id": element.id, + "element_id": element_id, "state": state.value, }, ) - logger.debug(f"Updated activity of element {element.id} to {state}") + logger.debug(f"Updated activity of element {element_id} to {state}") return out except ErrorResponse as e: logger.warning( - f"Failed to update activity of element {element.id} to {state.value} due to an API error: {e.content}" + f"Failed to update activity of element {element_id} to {state.value} due to an API error: {e.content}" ) except Exception as e: logger.warning( - f"Failed to update activity of element {element.id} to {state.value}: {e}" + f"Failed to update activity of element {element_id} to {state.value}: {e}" ) diff --git a/tests/test_elements_worker/test_worker.py b/tests/test_elements_worker/test_worker.py index 9942f3a9d0d1b09f5100a3bc6dc5d6a01e3dffc0..338f05d9eda935277135eff8dd4c016b2bb8ac09 100644 --- a/tests/test_elements_worker/test_worker.py +++ b/tests/test_elements_worker/test_worker.py @@ -4,7 +4,6 @@ import json import pytest from apistar.exceptions import ErrorResponse -from arkindex_worker.models import Element from arkindex_worker.worker import ActivityState # Common API calls for all workers @@ -81,9 +80,7 @@ def test_feature_disabled(responses, mock_elements_worker): """Test disabled calls do not trigger any API calls""" assert not mock_elements_worker.is_read_only - out = mock_elements_worker.update_activity( - Element({"id": "1234-deadbeef"}), ActivityState.Processed - ) + out = mock_elements_worker.update_activity("1234-deadbeef", ActivityState.Processed) assert out is None assert len(responses.calls) == 2 @@ -98,9 +95,7 @@ def test_readonly(responses, mock_elements_worker): assert mock_elements_worker.is_read_only is True mock_elements_worker.features["workers_activity"] = True - out = mock_elements_worker.update_activity( - Element({"id": "1234-deadbeef"}), ActivityState.Processed - ) + out = mock_elements_worker.update_activity("1234-deadbeef", ActivityState.Processed) assert out is None assert len(responses.calls) == 2 @@ -122,9 +117,7 @@ def test_update_call(responses, mock_elements_worker): # Enable worker activity mock_elements_worker.features["workers_activity"] = True - out = mock_elements_worker.update_activity( - Element({"id": "1234-deadbeef"}), ActivityState.Processed - ) + out = mock_elements_worker.update_activity("1234-deadbeef", ActivityState.Processed) # Check the response received by worker assert out == {