Esempio n. 1
0
File: wsjobd.py Progetto: bsc-s2/ops
    def _setup_response(self, msg):

        func = self._get_func_by_name(msg)
        channel = self
        job = get_or_create_job(channel, msg, func)

        if job is None:
            raise JobNotInSessionError('job not in sessions: ' +
                                       repr(Job.sessions))

        progress = msg.get('progress', {})

        if progress in (None, False):
            return

        if type(progress) != type({}):
            raise InvalidProgressError(
                'the progress in message is not a dictionary')

        interval = progress.get('interval', 5)
        progress_key = progress.get('key')

        if progress_key is None:
            lam = lambda r: r
        else:
            lam = lambda r: r.get(progress_key)

        threadutil.start_thread(target=progress_sender,
                                args=(job, channel, interval, lam),
                                daemon=True)
    def _setup_response(self, msg):

        func = self._get_func_by_name(msg)
        channel = self
        job = get_or_create_job(channel, msg, func)

        if job is None:
            raise JobNotInSessionError(
                'job not in sessions: ' + repr(Job.sessions))

        progress = msg.get('progress', {})

        if progress in (None, False):
            return

        if type(progress) != type({}):
            raise InvalidProgressError(
                'the progress in message is not a dictionary')

        interval = progress.get('interval', 5)
        progress_key = progress.get('key')

        if progress_key is None:
            lam = lambda r: r
        else:
            lam = lambda r: r[progress_key]

        threadutil.start_thread(target=progress_sender,
                                args=(job, channel, interval, lam),
                                daemon=True)
Esempio n. 3
0
    def __init__(self, channel, msg, func):

        self.ident = msg['ident']
        self.channel = channel
        self.data = msg
        self.worker = func
        self.ctx = {}
        self.err = None

        if self.ident in self.sessions:
            logger.info('job: %s already exists, created by chennel %s' %
                        (self.ident, repr(self.sessions[self.ident].channel)))
            return
        else:
            self.sessions[self.ident] = self
            logger.info(('inserted job: %s to sessions by channel %s, ' +
                         'there are %d jobs in sessions now') %
                        (self.ident, repr(self.channel), len(self.sessions)))

        self.thread = threadutil.start_thread(target=self.work,
                                              args=(),
                                              daemon=True)
    def __init__(self, channel, msg, func):

        self.ident = msg['ident']
        self.channel = channel
        self.data = msg
        self.worker = func
        self.ctx = {}
        self.err = None
        self.progress_available = threading.Event()

        if self.ident in self.sessions:
            logger.info('job: %s already exists, created by chennel %s' %
                        (self.ident, repr(self.sessions[self.ident].channel)))
            return
        else:
            self.sessions[self.ident] = self
            logger.info(('inserted job: %s to sessions by channel %s, ' +
                         'there are %d jobs in sessions now') %
                        (self.ident, repr(self.channel), len(self.sessions)))

        self.thread = threadutil.start_thread(target=self.work, args=(),
                                              daemon=True)
Esempio n. 5
0
def sync():

    try:
        report_sess = {'stop': False}
        report_th = threadutil.start_thread(report,
                                            args=(report_sess, ),
                                            daemon=True)

        jobq.run(iter_files(src_client, cnf['SRC_BUCKET']), [
            (sync_one_file, 3),
            (update_sync_stat, 1),
        ])

        report_sess['stop'] = True
        report_th.join()

    except KeyboardInterrupt:
        logger.exception('get KeyboardInterrupt')
        sys.exit(0)

    finally:
        report_state()
        dump_state()