X-Git-Url: http://mmka.chem.univ.gda.pl/gitweb/?a=blobdiff_plain;f=qcg%2Fservice.py;h=9e99d43bee72267688c778dbd0f8dc84e1a8acfa;hb=1073f7f5b5a9e51fd79ab58f1f4fb3389d7e6331;hp=c87f40a83920a2280803a6817793ac7c948663b6;hpb=0b053edee9793cef21c62b3ccb379eb304a22ccd;p=qcg-portal.git diff --git a/qcg/service.py b/qcg/service.py index c87f40a..9e99d43 100644 --- a/qcg/service.py +++ b/qcg/service.py @@ -5,7 +5,6 @@ from django.db import transaction from django.utils.functional import SimpleLazyObject from django.utils.timezone import now from pyqcg import QCG -from pyqcg.description import JobDescription from pyqcg.service import Registry from pyqcg.utils import Credential, TimePeriod, JobStatus, TaskStatus @@ -85,9 +84,6 @@ def update_user_data(user, proxy): @transaction.atomic def update_job(job, proxy): - if job.terminated: - return - ts = time.time() QCG.start() @@ -133,37 +129,20 @@ def update_job(job, proxy): elapsed, job.job_id, elapsed_job, job.tasks.count(), elapsed_tasks, elapsed_py) -def submit_job(params, proxy): +def submit(obj, proxy): + ts = time.time() QCG.start() - desc = JobDescription(Credential(proxy)) - - direct_map = ('env_variables', 'executable', 'arguments', 'note', 'grant', 'hosts', 'properties', 'queue', 'procs', - 'wall_time', 'memory', 'memory_per_slot', 'modules', 'input', 'stage_in', 'native', 'notify', - 'preprocess', 'postprocess', 'persistent') - - for name in direct_map: - if params[name]: - setattr(desc, name, params[name]) - - if params['application']: - desc.set_application(*params['application']) - if params['nodes']: - desc.set_nodes(*params['nodes']) - if params['reservation']: - desc.set_reservation(params['reservation']) - if params['watch_output']: - desc.set_watch_output(params['watch_output'], params['watch_output_pattern']) - # TODO script - # TODO monitoring + cred = Credential(proxy) - # for prop in direct_map + ('application', 'nodes', 'env_variables', 'reservation', 'watch_output'): - # print prop, type(getattr(desc, prop)), repr(getattr(desc, prop)) - - # print desc.xml_description + jts = time.time() + result = obj.submit(cred) + elapsed_submit = time.time() - jts - job = desc.submit() + elapsed = time.time() - ts + elapsed_py = elapsed - elapsed_submit + logger.info('(%.3f) JOB = %s, REMOTE = %.3f, LOCAL = %.3f', elapsed, result.job_id, elapsed_submit, elapsed_py) - return job.job_id + return result def cancel(obj, proxy): @@ -179,4 +158,20 @@ def cancel(obj, proxy): elapsed = time.time() - ts elapsed_py = elapsed - elapsed_cancel - logger.info('(%.3f) OBJ = %s (%.3f), TIME = %.3f', elapsed, obj, elapsed_cancel, elapsed_py) + logger.info('(%.3f) OBJ = %s, REMOTE = %.3f, LOCAL = %.3f', elapsed, obj, elapsed_cancel, elapsed_py) + + +def clean(obj, proxy): + ts = time.time() + QCG.start() + + qcg_obj = obj.qcg_job if isinstance(obj, Job) else obj.qcg_task + qcg_obj.credential = Credential(proxy) + + jts = time.time() + qcg_obj.clean() + elapsed_clean = time.time() - jts + + elapsed = time.time() - ts + elapsed_py = elapsed - elapsed_clean + logger.info('(%.3f) OBJ = %s, REMOTE = %.3f, LOCAL = %.3f', elapsed, obj, elapsed_clean, elapsed_py)