From 594a0f9632785a4acb6d99ddd6d5171138339b60 Mon Sep 17 00:00:00 2001 From: Frederick Muriuki Muriithi Date: Mon, 24 Mar 2025 16:23:36 -0500 Subject: Provide initial incomplete jobs manager script. --- gn_libs/scripts/worker.py | 49 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 gn_libs/scripts/worker.py (limited to 'gn_libs/scripts/worker.py') diff --git a/gn_libs/scripts/worker.py b/gn_libs/scripts/worker.py new file mode 100644 index 0000000..2479aef --- /dev/null +++ b/gn_libs/scripts/worker.py @@ -0,0 +1,49 @@ +import sys +import shlex +import argparse +import traceback + +from gn_libs import jobs, sqlite3 + + +def run_job(conn, job_id): + """Run the job.""" + try: + pass + except: + jobs.update_metadata(conn, args.job_id, "status", "error") + jobs.push_to_stream(conn, args.job_id, "stderr", traceback.format_exc()) + return 4 + + +def parse_args(): + """Define and parse CLI args.""" + parser = argparse.ArgumentParser( + prog="GN-Libs Worker", + description = ( + "Generic worker to launch and manage jobs defined with gn-libs")) + parser.add_argument( + "jobs_db_uri", + help="The URI to the SQLite3 database holding the jobs' details") + parser.add_argument("job_id", help="The id of the job being processed") + return parser.parse_args() + +def main(): + """Entry-point to this program.""" + args = parse_args() + with (sqlite3.connection(args.jobs_db_uri) as conn, + sqlite3.cursor(conn) as cursor): + job = jobs.job(conn, args.job_id) + if job: + return run_job(conn, args.job_id) + + jobs.update_metadata(conn, args.job_id, "status", "error") + jobs.push_to_stream(conn, args.job_id, "stderr", "Job not found!") + return 2 + + return 3 + + + +if __name__ == "__main__": + sys.exit(main()) -- cgit v1.2.3