aboutsummaryrefslogtreecommitdiff
path: root/qc_app/jobs.py
diff options
context:
space:
mode:
authorFrederick Muriuki Muriithi2022-09-08 09:37:22 +0300
committerFrederick Muriuki Muriithi2022-09-08 09:37:22 +0300
commita7e9e94cfafcdee11a68d440a71fb4936c9af82b (patch)
treef9cbeb3646b32d3bf3e539867376e3db7c1abda9 /qc_app/jobs.py
parent38af157b22566cf2bc28d69ac1d18c878321e607 (diff)
downloadgn-uploader-a7e9e94cfafcdee11a68d440a71fb4936c9af82b.tar.gz
Use sys.executable and setup default environment
Use the sys.executable to get the correct python binary to run the external processes, and setup the environment to point to the correct PYTHONPATH.
Diffstat (limited to 'qc_app/jobs.py')
-rw-r--r--qc_app/jobs.py13
1 files changed, 8 insertions, 5 deletions
diff --git a/qc_app/jobs.py b/qc_app/jobs.py
index 9b350b7..dc9ba92 100644
--- a/qc_app/jobs.py
+++ b/qc_app/jobs.py
@@ -1,11 +1,13 @@
"""Handle jobs"""
import os
+import sys
import shlex
import subprocess
from uuid import uuid4
from datetime import timedelta
from redis import Redis
+from flask import current_app as app
def error_filename(job_id, error_dir):
"Compute the path of the file where errors will be dumped."
@@ -29,7 +31,7 @@ def build_file_verification_job(
"Build a file verification job"
job_id = str(uuid4())
command = [
- "python3", "-m", "scripts.validate_file", filetype, filepath, redisurl,
+ sys.executable, "-m", "scripts.validate_file", filetype, filepath, redisurl,
job_id
]
return __init_job__(
@@ -44,8 +46,8 @@ def data_insertion_job(# pylint: disable=[too-many-arguments]
ttl_seconds: int) -> dict:
"Build a data insertion job"
command = [
- "python3", "-m", "scripts.insert_data", filetype, filepath, speciesid,
- platformid, datasetid, databaseuri, redisuri
+ sys.executable, "-m", "scripts.insert_data", filetype, filepath,
+ speciesid, platformid, datasetid, databaseuri, redisuri
]
return __init_job__(
redis_conn, str(uuid4()), command, "data-insertion", ttl_seconds, {
@@ -62,8 +64,9 @@ def launch_job(the_job: dict, redisurl: str, error_dir):
"w",
encoding="utf-8") as errorfile:
subprocess.Popen( # pylint: disable=[consider-using-with]
- ["python3", "-m", "scripts.worker", redisurl, job_id],
- stderr=errorfile)
+ [sys.executable, "-m", "scripts.worker", redisurl, job_id],
+ stderr=errorfile,
+ env={"PYTHONPATH": ":".join(sys.path)})
return the_job