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())