def gw_task_revoked(sender=None, request=None, **rest): try: sender.job_manager = _job_manager(headers=request.message.headers, kwargs=request.kwargsrepr) _update_status(sender, JobStatus.CANCELED) except AttributeError: pass except JobSpecNotFound: logger.warn( 'No jobInfoSpec. Unable to move \'%s\' into CANCELED state.')
def gw_task_prerun(task=None, sender=None, task_id=None, args=None, kwargs=None, **rest): """Deserialize the jobInfoSpec passed in through the headers. This provides the a JobManager class as an attribute of the task before task execution. decorated functions may bind to their task and have access to the job_manager for logging and updating their status in girder. """ if is_builtin_celery_task(sender.name): return try: task.job_manager = _job_manager(task.request, task.request.headers) _update_status(task, JobStatus.RUNNING) except JobSpecNotFound: task.job_manager = None logger.warn('No jobInfoSpec. Setting job_manager to None.') except StateTransitionException: # Fetch the current status of the job status = task.job_manager.refreshStatus() # If we are canceling we want to stay in that state if status != JobStatus.CANCELING: raise try: task.girder_client = GirderClient(apiUrl=task.request.girder_api_url) task.girder_client.token = task.request.girder_client_token except AttributeError: task.girder_client = None # Deserialize girder_result_hooks if they exist if hasattr(task.request, 'girder_result_hooks'): u = jsonpickle.unpickler.Unpickler() task.request.girder_result_hooks = \ [u.restore(grh) for grh in task.request.girder_result_hooks]