예제 #1
0
    def unpack(cls, jobpack, globals={}):
        """Unpack the previously packed :class:`JobDict`."""

        jobdict = cls.defaults.copy()
        jobdict.update(**decode_netstring_fd(jobpack))

        for key in cls.defaults:
            if key == 'input':
                jobdict['input'] = [i.split()
                                    for i in jobdict['input'].split(' ')]
            elif key == 'nr_reduces':
                jobdict[key] = int(jobdict[key])
            elif key == 'scheduler':
                for key in cls.scheduler_keys:
                    if 'sched_%s' % key in jobdict:
                        jobdict['scheduler'][key] = jobdict.pop('sched_%s' % key)
            elif key == 'prefix':
                pass
            elif jobdict[key] is None:
                pass
            elif key in cls.stacks:
                jobdict[key] = util.unpack_stack(jobdict[key], globals=globals)
            else:
                jobdict[key] = util.unpack(jobdict[key], globals=globals)
        # map readers and writers to streams
        for oldio, stream, wrapper in cls.io_mappings:
            if jobdict[oldio]:
                jobdict[stream].append(wrapper(jobdict[oldio]))
        return cls(**jobdict)
예제 #2
0
파일: core.py 프로젝트: mshron/disco
    def unpack(cls, jobpack, globals={}):
        """Unpack the previously packed :class:`JobDict`."""

        jobdict = cls.defaults.copy()
        jobdict.update(**decode_netstring_fd(jobpack))

        for key in cls.defaults:
            if key == 'input':
                jobdict['input'] = [
                    i.split() for i in jobdict['input'].split(' ')
                ]
            elif key == 'username':
                pass
            elif key == 'nr_reduces':
                jobdict[key] = int(jobdict[key])
            elif key == 'scheduler':
                for key in cls.scheduler_keys:
                    if 'sched_%s' % key in jobdict:
                        jobdict['scheduler'][key] = jobdict.pop('sched_%s' %
                                                                key)
            elif key == 'prefix':
                pass
            elif jobdict[key] is None:
                pass
            elif key in cls.stacks:
                jobdict[key] = util.unpack_stack(jobdict[key], globals=globals)
            else:
                jobdict[key] = util.unpack(jobdict[key], globals=globals)
        return cls(**jobdict)
예제 #3
0
        def new_job(self, *args, **kwargs):
                job = Job(DummyDisco(), **kwargs)
                req = decode_netstring_fd(cStringIO.StringIO(job.msg))

                argv_backup = sys.argv[:]
                out_backup = sys.stderr
                sys.argv = ["", "", job.name, "localhost",
                            "http://nohost", self.partition]
                sys.argv += kwargs["input"]
                
                from disconode import disco_worker

                sys.stderr = out = MsgStream()
                try:
                        if self.mode == "map":
                                disco_worker.op_map(req)
                        elif self.mode == "reduce":
                                disco_worker.op_reduce(req)
                        else:
                                raise "Unknown mode: %s "\
                                      "(must be 'map' or 'reduce')"\
                                        % self.mode
                finally:
                        sys.argv = argv_backup
                        sys.stderr = out_backup
                return out.out
예제 #4
0
파일: core.py 프로젝트: JensRantil/disco
    def unpack(cls, jobpack, globals={}):
        """Unpack the previously packed :class:`JobDict`."""

        jobdict = cls.defaults.copy()
        jobdict.update(**decode_netstring_fd(jobpack))

        for key in cls.defaults:
            if key == 'input':
                jobdict['input'] = [i.split()
                                    for i in jobdict['input'].split(' ')]
            elif key == 'username':
                pass
            elif key == 'nr_reduces':
                jobdict[key] = int(jobdict[key])
            elif key == 'scheduler':
                for key in cls.scheduler_keys:
                    if 'sched_%s' % key in jobdict:
                        jobdict['scheduler'][key] = jobdict.pop('sched_%s' % key)
            elif key == 'prefix':
                pass
            elif jobdict[key] is None:
                pass
            elif key in cls.stacks:
                jobdict[key] = util.unpack_stack(jobdict[key], globals=globals)
            else:
                jobdict[key] = util.unpack(jobdict[key], globals=globals)
        return cls(**jobdict)
예제 #5
0
파일: core.py 프로젝트: jseppanen/disco
 def jobspec(self, name):
     r = self.request("/disco/ctrl/parameters?name=%s" % name, redir=True)
     return decode_netstring_fd(cStringIO.StringIO(r))