AllenNeuralDynamics / AllenNeuralDynamics/prototome-web-ui

Add error handling channel

Ouverte
#41 0 commentaires 0 réactions 2 personnes assignées Réclamée par @Poofjunior Voir sur GitHub
Langage dominant
TypeScript
Étoiles
0
Forks
0
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

To catch backend errors, we need to send the error through one-liner and dedicate a channel to unpacking and alerting users of errors. Implemented in brainslosher like so

slosher class
```
class BrainSlosher(Instrument):
def __init__():
...
# attribute to track events that occur in job_worker
self.job_status_lock = Lock()
self.job_status: BrainSlosherJobStatus = BrainSlosherJobStatus(status="idle")

def _run_job_worker(self, job: BrainSlosherJob, job_path: Path):

try:
super()._run_job_worker(job, job_path)
except Exception as e:
self.log.error(f"Error running job: {str(e)}.")
message = BrainSlosherJobStatus(status="failed", message=str(e))

```

Server class
```
class ZMQServer(RouterServer):

def __init__(self, rpc_port: str = "5555", broadcast_port: str = "5556",
config: dict[str, str] = None, instances: dict = None):
.....
self.add_stream("error_check", 1, self.check_job_status)

def check_job_status(self) -> dict:

message = self.brainslosher.get_job_status()
return message.model_dump()

```

and then the front end treats everything coming from the error_check as an error
```
const handleErrorMessage = (evt: MessageEvent) => {
const error = JSON.parse(evt.data);
window.dispatchEvent(new CustomEvent("Error During Run", { detail: {message: error} }));
};
```

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.