def post(self, request, book, page, operation, task_id): try: op_status = operation_worker.status(task_id) if op_status.code == TaskStatusCodes.FINISHED: result = operation_worker.pop_result(task_id) result['status'] = op_status.to_dict() return Response(result) elif op_status.code == TaskStatusCodes.ERROR: error = operation_worker.pop_result(task_id) raise error else: return Response({'status': op_status.to_dict()}) except TaskNotFoundException: return Response({'status': TaskStatus().to_dict()}) except KeyError as e: logger.exception(e) return APIError( status.HTTP_400_BAD_REQUEST, "Invalid request. See server error logs for further information.", "Invalid request", ErrorCodes.OPERATION_INVALID_GET, ).response() except (FileNotFoundError, OSError) as e: logger.error(e) return Response({'error': 'no-model'}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) except Exception as e: logging.error(e) return Response({'error': 'unknown'}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
def get(self, request, book, operation): book = DatabaseBook(book) body = json.loads(request.body, encoding='utf-8') if request.body else {} task_runner = BookOperationView.op_to_task_runner(operation, book, body) if task_runner is not None: task_id = operation_worker.id_by_task_runner(task_runner) op_status = operation_worker.status(task_id) if op_status: return Response({'status': op_status.to_dict()}) else: return Response(status.HTTP_204_NO_CONTENT) return Response(status=status.HTTP_204_NO_CONTENT)
def post(self, request, book, operation, task_id): try: op_status = operation_worker.status(task_id) if op_status.code == TaskStatusCodes.FINISHED: result = operation_worker.pop_result(task_id) result['status'] = op_status.to_dict() return Response(result) elif op_status.code == TaskStatusCodes.ERROR: error = operation_worker.pop_result(task_id) if isinstance(error, Exception): raise error logger.error("Error in task: {} (status: )".format(error, op_status)) return Response(error, status=status.HTTP_500_INTERNAL_SERVER_ERROR) else: return Response({'status': op_status.to_dict()}) except TaskNotFoundException as e: return APIError(status.HTTP_404_NOT_FOUND, "Task was not found.", "Task not found.", ErrorCodes.OPERATION_TASK_NOT_FOUND, ).response() except KeyError as e: logger.exception(e) return APIError(status.HTTP_400_BAD_REQUEST, "Invalid request. See server error logs for further information.", "Invalid request", ErrorCodes.OPERATION_INVALID_GET, ).response() except (FileNotFoundError, OSError, IOError) as e: logger.exception(e) return APIError(status.HTTP_400_BAD_REQUEST, "Model not found", "No model was found", ErrorCodes.OPERATION_TASK_NO_MODEL).response() except EmptyDataSetException as e: logger.exception(e) return APIError(status.HTTP_400_BAD_REQUEST, "Dataset is empty", "No ground truth files available", ErrorCodes.OPERATION_TASK_TRAIN_EMPTY_DATASET, ).response() except Exception as e: logging.exception(e) return APIError(status.HTTP_500_INTERNAL_SERVER_ERROR, str(e), "Unknown server error", ErrorCodes.OPERATION_UNKNOWN_SERVER_ERROR, ).response()
def get(self, request, book, operation, task_id): op_status = operation_worker.status(task_id) if op_status: return Response({'status': op_status.to_dict()}) else: return Response(status=status.HTTP_204_NO_CONTENT)