{"id":20954,"library":"assemblyline-v4-service","title":"Assemblyline 4 Service Base","description":"Base library for building services in Assemblyline 4, a scalable file analysis framework. Current version 4.7.3.1. Releases are frequent with a dev release cadence.","status":"active","version":"4.7.3.1","language":"python","source_language":"en","source_url":"https://github.com/CybercentreCanada/assemblyline-v4-service/","tags":["assemblyline","malware-analysis","service-framework","security"],"install":[{"cmd":"pip install assemblyline-v4-service","lang":"bash","label":"Install from PyPI"}],"dependencies":[],"imports":[{"note":"Old location from Assemblyline 3; v4 moved base to assemblyline_v4_service.","wrong":"from assemblyline.common import ServiceBase","symbol":"ServiceBase","correct":"from assemblyline_v4_service.common.base import ServiceBase"},{"note":"Similarly moved to v4 namespace.","wrong":"from assemblyline.common.task import Task","symbol":"Task","correct":"from assemblyline_v4_service.common.task import Task"}],"quickstart":{"code":"import os\nfrom assemblyline_v4_service.common.base import ServiceBase\nfrom assemblyline_v4_service.common.request import ServiceRequest\nfrom assemblyline_v4_service.common.result import Result\n\nclass MyService(ServiceBase):\n    def start(self):\n        self.log.info(f'Starting service, API_KEY={os.environ.get(\"API_KEY\", \"\")[:4]}...')\n\n    def execute(self, request: ServiceRequest) -> None:\n        result = Result()\n        request.result = result\n\nif __name__ == '__main__':\n    MyService().start()","lang":"python","description":"Minimal service skeleton with proper imports and execute method."},"warnings":[{"fix":"Replace 'from assemblyline.common' with 'from assemblyline_v4_service.common'.","message":"Namespace changed from assemblyline to assemblyline_v4_service in v4.0.0. All imports must be updated.","severity":"breaking","affected_versions":"<=4.0.0"},{"fix":"Define execute(self, request: ServiceRequest) and use request.get_param(), etc.","message":"ServiceBase.execute() now expects a ServiceRequest object, not a dict. Passing a dict will cause AttributeError.","severity":"gotcha","affected_versions":">=4.0.0"},{"fix":"Add if __name__ == '__main__': MyService().start()","message":"Must call self.start() in __main__ block; otherwise service won't initialize correctly.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"pip install assemblyline-v4-service","cause":"Installing the wrong package (assemblyline-v4-service is correct) or missing dependency.","error":"ModuleNotFoundError: No module named 'assemblyline'"},{"fix":"from assemblyline_v4_service.common.base import ServiceBase","cause":"Using wrong import path; correct path is assemblyline_v4_service.common.base.","error":"ImportError: cannot import name 'ServiceBase' from 'assemblyline_v4_service'"},{"fix":"Change execute method signature to def execute(self, request: ServiceRequest):","cause":"execute() received a dict instead of a ServiceRequest object.","error":"AttributeError: 'dict' object has no attribute 'get_param'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}