diff --git a/client/pages/projects/_id.vue b/client/pages/projects/_id.vue index 7696fe4b20875cc478561383fdbc683eff642e1e..a2ae593b72e7a4fe99efcfb04a9c90fad4c011f0 100644 --- a/client/pages/projects/_id.vue +++ b/client/pages/projects/_id.vue @@ -29,6 +29,13 @@ <strong style="color:white; text-transform:capitalize;">{{progress}} %</strong> </v-progress-linear> </v-col> + <v-col + class="text-subtitle-1 text-center" + cols="12" + v-if="(activeTask == 0) || (pendingTask != 0)" + > + Task: {{activeTask}} running and {{pendingTask}} pending. + </v-col> </v-row> <v-row v-show="isready" align="center"> @@ -297,6 +304,8 @@ export default { isready: false, isready2: false, progress:0, + activeTask: 1, + pendingTask: 0, gencov:null, metadata:{"nb_phenotypes":0,"nb_snps":0}, summary:{"JASSSignif":{"MinUnivNotSignif":0,"MinUnivSignif":0},"JASSNotSignif":{"MinUnivNotSignif":0,"MinUnivSignif":0}}, @@ -562,6 +571,12 @@ methods:{ async getStatus(){ + await this.$axios.$get('/queue_status/').then((function (resultStatus) { + console.log(resultStatus); + this.activeTask = resultStatus.active; + this.pendingTask = resultStatus.reserved; + }).bind(this)); + await this.$axios.$get('/projects/'+this.project.id).then((async function (result) { console.log(result.status.worktable); diff --git a/jass/server.py b/jass/server.py index 9345b3919fc7488a46e3bcace295d29ea943cea4..af47bc848c8666ec3a0ebaae0edee1b31bf90331 100644 --- a/jass/server.py +++ b/jass/server.py @@ -6,14 +6,14 @@ from json import JSONDecodeError from pathlib import Path from typing import List -from starlette.responses import RedirectResponse +from starlette.responses import RedirectResponse, JSONResponse from jass import util from jass.config import config from jass.models.phenotype import Phenotype, get_available_phenotypes, PhenotypeIdList from jass.models.inittable import get_inittable_meta from jass.models.project import GlobalProject, load_project as project__load_project -from jass.tasks import create_project, run_project_analysis_if_needed +from jass.tasks import create_project, run_project_analysis_if_needed, get_queue_status from fastapi import FastAPI, HTTPException from fastapi.responses import Response, FileResponse @@ -167,6 +167,11 @@ def get_manhattan(project_id: str, selected_chr: str, selected_region: str): ) +@app.get("/api/queue_status") +def project_detail(): + return JSONResponse(get_queue_status()) + + # @blp_inittable.route("") diff --git a/jass/tasks.py b/jass/tasks.py index 1d66def0a69bf475ef1af3a9a86683e1466803af..4a4b951fb80e6f41d8f30d768fa0fe6f2d54a250 100644 --- a/jass/tasks.py +++ b/jass/tasks.py @@ -84,6 +84,11 @@ def dummy_task(): print("This task to nothing, but help the chain to have a valid status") +def get_queue_status(): + inspect = celery.control.inspect() + return dict((k, len(list(getattr(inspect, k)().values())[0])) for k in ['active', 'reserved']) + + def run_project_analysis_if_needed(project): if project.has_computation_going_on(): return