change how we calculate active jobs, probably will remove it from pa_job_engine, safer with threads I think. But, mostyle, added in client / server socket comms between web FE and job manager, with better job creation message (including link to job detail) and when you view job detail it auto-refreshes every few seconds until job complete)

This commit is contained in:
2021-01-17 12:35:28 +11:00
parent abff2d8bab
commit 2b9dedb9b9
7 changed files with 52 additions and 21 deletions

18
job.py
View File

@@ -7,6 +7,8 @@ from sqlalchemy.exc import SQLAlchemyError
from status import st, Status
from datetime import datetime, timedelta
import pytz
import socket
from shared import PA_JOB_MANAGER_HOST, PA_JOB_MANAGER_PORT
class Joblog(db.Model):
id = db.Column(db.Integer, db.Sequence('ill_id_seq'), primary_key=True )
@@ -42,9 +44,8 @@ class Job(db.Model):
# Utility classes for Jobs
################################################################################
def GetNumActiveJobs():
ret = db.engine.execute("select num_active_jobs from pa_job_manager").first();
if( ret != None ):
return ret.num_active_jobs
ret = db.engine.execute("select count(1) from job where pa_job_state != 'Completed'").first()
return ret.count
###############################################################################
# NewJob takes a name (which will be matched in pa_job_manager.py to run
@@ -57,6 +58,17 @@ def NewJob(name, num_passes="1", num_files="0", wait_for=None ):
db.session.add(job)
db.session.commit()
try:
print("Waking up PA Job Manager")
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((PA_JOB_MANAGER_HOST, PA_JOB_MANAGER_PORT))
s.sendall(b'Hello, world')
s.close()
except Exception as e:
st.SetAlert("danger")
st.SetMessage("Failed to connect to job manager, has it crashed? Exception was:{}".format(e))
return job
################################################################################
# /jobs -> show current settings
################################################################################