about summary refs log tree commit diff
path: root/wqflask/jobs
diff options
context:
space:
mode:
authorArun Isaac2023-12-29 18:55:37 +0000
committerArun Isaac2023-12-29 19:01:46 +0000
commit204a308be0f741726b9a620d88fbc22b22124c81 (patch)
treeb3cf66906674020b530c844c2bb4982c8a0e2d39 /wqflask/jobs
parent83062c75442160427b50420161bfcae2c5c34c84 (diff)
downloadgenenetwork2-204a308be0f741726b9a620d88fbc22b22124c81.tar.gz
Namespace all modules under gn2.
We move all modules under a gn2 directory. This is important for
"correct" packaging and deployment as a Guix service.
Diffstat (limited to 'wqflask/jobs')
-rw-r--r--wqflask/jobs/__init__.py0
-rw-r--r--wqflask/jobs/jobs.py74
2 files changed, 0 insertions, 74 deletions
diff --git a/wqflask/jobs/__init__.py b/wqflask/jobs/__init__.py
deleted file mode 100644
index e69de29b..00000000
--- a/wqflask/jobs/__init__.py
+++ /dev/null
diff --git a/wqflask/jobs/jobs.py b/wqflask/jobs/jobs.py
deleted file mode 100644
index f796fa9a..00000000
--- a/wqflask/jobs/jobs.py
+++ /dev/null
@@ -1,74 +0,0 @@
-"""Job management functions"""
-
-import sys
-import json
-import shlex
-import subprocess
-from uuid import UUID, uuid4
-
-from redis import Redis
-from pymonad.maybe import Maybe
-
-JOBS_NAMESPACE="gn2:jobs" # The namespace where jobs are kept
-
-class NoSuchJob(Exception):
-    """Raised if a given job does not exist"""
-
-    def __init__(self, job_id: UUID):
-        """Initialise the exception object."""
-        super().__init__(f"Could not find a job with the id '{job_id}'.")
-
-class InvalidJobCommand(Exception):
-    """Raised if the job command is invalid."""
-
-    def __init__(self, job_command: list[str]):
-        """Initialise the exception object."""
-        super().__init__(f"The job command '{job_command}' is invalid.")
-
-def job_namespace(job_id: UUID):
-    return f"{JOBS_NAMESPACE}:{job_id}"
-
-def job(redis_conn: Redis, job_id: UUID):
-    job = redis_conn.hgetall(job_namespace(job_id))
-    return Maybe(job, bool(job))
-
-def status(the_job: Maybe) -> str:
-    return job.maybe("NOT-FOUND", lambda val: val.get("status", "NOT-FOUND"))
-
-def command(job: Maybe) -> list[str]:
-    return job.maybe(
-        ["NOT-FOUND"], lambda val: shlex.split(val.get("command", "NOT-FOUND")))
-
-def __validate_command__(job_command):
-    try:
-        assert isinstance(job_command, list), "Not a list"
-        assert all((isinstance(val, str) for val in job_command))
-        assert all((len(val) > 1 for val in job_command))
-    except AssertionError as assert_err:
-        raise InvalidJobCommand(job_command)
-
-def queue(redis_conn: Redis, job: dict) -> UUID:
-    command = job["command"]
-    __validate_command__(command)
-    job_id = uuid4()
-    redis_conn.hset(
-        name=job_namespace(job_id),
-        mapping={"job_id": str(job_id), **job, "command": shlex.join(command)})
-    return job_id
-
-def run(job_id: UUID, redis_uri: str):
-    command = [
-        sys.executable, "-m", "scripts.run_external",
-        f"--redis-uri={redis_uri}", "run-job", str(job_id)]
-    print(f"COMMAND: {shlex.join(command)}")
-    subprocess.Popen(command)
-
-def completed_successfully(job):
-    return (
-        job.get("status") == "completed" and
-        job.get("completion-status") == "success")
-
-def completed_erroneously(job):
-    return (
-        job.get("status") == "completed" and
-        job.get("completion-status") == "error")