Пример #1
0
 def print_queue_status(self, onlymine = False):
     if onlymine:
         Queue2Send = self.Queue.SelAttrVal(attr='runninghost',
                                            value={get_client_name(self)})
     else:
         Queue2Send = Global.JobQueue(self.Queue)
     
     for k, v in Queue2Send.items():
         Queue2Send.update({k:Global.JobView(v)})
     
     return (True, Queue2Send)
Пример #2
0
def main():

    load_jobs_from_last_run()
    deal_with_finished_jobs()

    global MyConfigs
    try:
        ok, data = handle_request('GIME_CONFIGS', MyConfigs)
        if ok:
            MyConfigs = data
    except Global.ServerDown:
        wait_for_server()

    while True:
        try:
            MyConfigs.totalJobs = len(MyQueue)
            num_running = check_running_jobs()
            deal_with_finished_jobs()
            num_allowed = deal_with_configs()
            jobs2Continue = num_allowed - num_running
            if jobs2Continue >= 0:
                continued = continue_stopped_jobs(jobs2Continue)
                jobs2Submit = jobs2Continue - continued
                if jobs2Submit > 0 and MyConfigs.MoreJobs:
                    ok, NewQueue = handle_request('GIME_JOBS', jobs2Submit)
                    if ok:
                        submit_jobs(NewQueue)
            elif jobs2Continue < 0:
                jobs2Stop = -jobs2Continue
                stop_jobs(jobs2Stop)

            time.sleep(WAIT_TIME)

            ok, Queue2Deal = handle_request('STATUS_QUEUE', True)
            if ok:
                isbigger = set(Queue2Deal.keys()) - set(MyQueue.keys())
                for k in isbigger:
                    Queue2Deal.pop(k)
                deal_with_signals(Queue2Deal)

            # Just send the complete jobs if needed, otherwise send jobviews
            Queue2Send = Global.JobQueue()
            for k, v in MyQueue.items():
                if v.status_key in {'e', 't', 'q'}:
                    Queue2Send.update({k: v})
                else:
                    if Queue2Deal.get(k) is not None:
                        Queue2Send.update({k: Global.JobView(v)})
                    else:
                        Queue2Send.update({k: v})

            deal_with_finished_jobs()

            ok, keys2remove = handle_request('UPDATE_JOBS', Queue2Send)
            if ok:
                for key in keys2remove:
                    jobid2proc.pop(key)
                    MyQueue.pop(key)
                    shutil.rmtree('/'.join(
                        [TEMPFOLDER, FOLDERFORMAT.format(key)]))

            ok, ResQueue = handle_request('GIME_RESULTS')
            if ok:
                deal_with_results(ResQueue)

            ok, data = handle_request('GIME_CONFIGS', MyConfigs)
            if ok:
                MyConfigs = data

            if MyConfigs.shutdown:
                shutdown()
        except psutil._error.NoSuchProcess:
            continue
        except Global.ServerDown:
            wait_for_server()