def __init__(self, appname): parser = self.parser = argparse.ArgumentParser(prog='work_generator') parser.add_argument('--cushion', nargs=1, default=[2000], type=int, help='number of unsent jobs to keep') parser.add_argument( '--max_jobs_create', nargs=1, default=[50], type=int, help= 'maximum number jobs to create in one pass, before waiting for transitioner' ) parser.add_argument('--sleep_interval', nargs=1, default=[5], type=int, help='how many seconds to sleep between passes') parser.add_argument('--debug', action='store_true', default=False, help='print out debug messages') self.add_args(parser) self.args = vars(parser.parse_args()) self.appname = appname self.log = SchedMessages() self.log.set_debug_level(DEBUG if self.args['debug'] else NORMAL)
import boinc_path_config from sched_messages import SchedMessages, CRITICAL from subprocess import CalledProcessError, check_output as _check_output, STDOUT from itertools import chain import os, os.path as osp from uuid import uuid4 from time import time import argparse import re log = SchedMessages() class CheckOutputError(Exception): pass projdir = osp.realpath(osp.join(osp.dirname(__file__), '..', '..')) def _get_create_work_args(): try: _check_output([osp.join(projdir, 'bin', 'create_work')], stderr=STDOUT) except CalledProcessError as e: doc = e.output matches = [ g.groups() for g in [re.search('--(.*?) (.*?) ', l) for l in doc.splitlines()] if g ] args = {k: {'n': int, 'x': float}.get(v, str) for k, v in matches}