• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Python defer.waitForDeferred函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Python中twisted.internet.defer.waitForDeferred函数的典型用法代码示例。如果您正苦于以下问题:Python waitForDeferred函数的具体用法?Python waitForDeferred怎么用?Python waitForDeferred使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了waitForDeferred函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。

示例1: test_stopService_flushes

    def test_stopService_flushes(self):
        wfd = defer.waitForDeferred(
            self.makeBuilder())
        yield wfd
        wfd.getResult()

        # just check that stopService calls this and waits
        # for the deferred to fire
        events = []

        long_d = defer.Deferred()
        long_d.addCallback(lambda _ : events.append('long_d'))
        self.bldr.maybeStartBuild = lambda : long_d

        stop_d = self.bldr.stopService()
        stop_d.addCallback(lambda _ : events.append('stop_d'))

        # nothing should have happened yet
        self.assertEqual(events, [])

        # finish the maybeStartBuild invocation..
        long_d.callback(None)

        wfd = defer.waitForDeferred(stop_d)
        yield wfd
        wfd.getResult()

        # and then check that things happened in the right order
        self.assertEqual(events, [ 'long_d', 'stop_d' ])
开发者ID:Callek,项目名称:buildbot,代码行数:29,代码来源:test_process_builder.py


示例2: stableTimerFired

    def stableTimerFired(self, timer_name):
        # if the service has already been stoppd then just bail out
        if not self._stable_timers[timer_name]:
            return

        # delete this now-fired timer
        del self._stable_timers[timer_name]

        wfd = defer.waitForDeferred(
                self.getChangeClassificationsForTimer(self.schedulerid,
                                                      timer_name))
        yield wfd
        classifications = wfd.getResult()

        # just in case: databases do weird things sometimes!
        if not classifications: # pragma: no cover
            return

        changeids = sorted(classifications.keys())
        wfd = defer.waitForDeferred(
                self.addBuildsetForChanges(reason='scheduler',
                                           changeids=changeids))
        yield wfd
        wfd.getResult()

        max_changeid = changeids[-1] # (changeids are sorted)
        wfd = defer.waitForDeferred(
                self.master.db.schedulers.flushChangeClassifications(
                            self.schedulerid, less_than=max_changeid+1))
        yield wfd
        wfd.getResult()
开发者ID:Acidburn0zzz,项目名称:build,代码行数:31,代码来源:basic.py


示例3: produce

    def produce(self):
        """Produce entries."""
        while not self._paused:
            wfd = defer.waitForDeferred(self._write_pending())
            yield wfd
            wfd.getResult()

            if self.finished:
                self.finishProducing()
                return
            first = self._last_fetching
            while (self._currently_fetching <= self._max_currently_fetching and
                   self._last_fetching <= self._end and
                   self._currently_stored <= FLAGS.entries_buffer):
                last = min(self._last_fetching + self._batch_size - 1, self._end,
                   self._last_fetching + self._max_currently_fetching
                           - self._currently_fetching + 1)
                self._batches.put(self._create_fetch_deferred(first, last))
                self._currently_fetching += last - first + 1
                first = last + 1
                self._last_fetching = first

            wfd = defer.waitForDeferred(self._batches.get())
            # Pause here until the body of the response is available.
            yield wfd
            # The producer may have been paused while waiting for the response,
            # or errored out upon receiving it: do not write the entries out
            # until after the next self._paused check.
            self._pending = wfd.getResult()
开发者ID:laiqu,项目名称:certificate-transparency,代码行数:29,代码来源:log_client.py


示例4: test_reconfigService_default_changed

    def test_reconfigService_default_changed(self):
        config = mock.Mock()
        config.slavePortnum = '9876'
        self.attachChangeSource(pb.PBChangeSource())

        self.startChangeSource()
        wfd = defer.waitForDeferred(
                self.changesource.reconfigService(config))
        yield wfd
        wfd.getResult()

        self.assertRegistered('9876', 'change', 'changepw')

        config.slavePortnum = '1234'

        wfd = defer.waitForDeferred(
                self.changesource.reconfigService(config))
        yield wfd
        wfd.getResult()

        self.assertUnregistered('9876', 'change', 'changepw')
        self.assertRegistered('1234', 'change', 'changepw')

        wfd = defer.waitForDeferred(
                self.stopChangeSource())
        yield wfd
        wfd.getResult()

        self.assertUnregistered('1234', 'change', 'changepw')
开发者ID:twisted-infra,项目名称:buildbot,代码行数:29,代码来源:test_changes_pb.py


示例5: deleteResource

def deleteResource(request, resource, resource_uri, depth="0"):
    """
    Handle a resource delete with proper quota etc updates
    """
    if not resource.exists():
        log.error("File not found: %s" % (resource,))
        raise HTTPError(responsecode.NOT_FOUND)

    # Do quota checks before we start deleting things
    myquota = waitForDeferred(resource.quota(request))
    yield myquota
    myquota = myquota.getResult()
    if myquota is not None:
        old_size = waitForDeferred(resource.quotaSize(request))
        yield old_size
        old_size = old_size.getResult()
    else:
        old_size = 0

    # Do delete
    x = waitForDeferred(delete(resource_uri, resource.fp, depth))
    yield x
    result = x.getResult()

    # Adjust quota
    if myquota is not None:
        d = waitForDeferred(resource.quotaSizeAdjust(request, -old_size))
        yield d
        d.getResult()
    
    yield result
开发者ID:nunb,项目名称:calendarserver,代码行数:31,代码来源:delete_common.py


示例6: start

    def start(self):
        args = self.args
        # args['dir'] is relative to Builder directory, and is required.
        assert args["dir"] is not None
        dirnames = args["dir"]

        self.timeout = args.get("timeout", 120)
        self.maxTime = args.get("maxTime", None)
        self.rc = 0
        if type(dirnames) is list:
            assert len(dirnames) != 0
            for dirname in dirnames:
                wfd = defer.waitForDeferred(self.removeSingleDir(dirname))
                yield wfd
                res = wfd.getResult()
                # Even if single removal of single file/dir consider it as
                # failure of whole command, but continue removing other files
                # Send 'rc' to master to handle failure cases
                if res != 0:
                    self.rc = res
        else:
            wfd = defer.waitForDeferred(self.removeSingleDir(dirnames))
            yield wfd
            self.rc = wfd.getResult()

        self.sendStatus({"rc": self.rc})
开发者ID:nlmills,项目名称:buildbot,代码行数:26,代码来源:fs.py


示例7: full

    def full(self, _):
        if self.method == 'clobber':
            wfd = defer.waitForDeferred(self.clobber())
            yield wfd
            wfd.getResult()
            return
        elif self.method in ['copy', 'export']:
            wfd = defer.waitForDeferred(self.copy())
            yield wfd
            wfd.getResult()
            return

        wfd = defer.waitForDeferred(self._sourcedirIsUpdatable())
        yield wfd
        updatable = wfd.getResult()
        if not updatable:
            d = self._dovccmd(['checkout', self.svnurl, '.'])
        elif self.method == 'clean':
            d = self.clean()
        elif self.method == 'fresh':
            d = self.fresh()

        wfd = defer.waitForDeferred(d)
        yield wfd
        wfd.getResult()
开发者ID:andyhelp,项目名称:buildbot,代码行数:25,代码来源:svn.py


示例8: test

def test():
    print "STARTING TEST"
    foo = paisley.CouchDB('localhost')
    print "\nCreate database 'testdb':"
    d = foo.createDB('testdb1')
    d.addCallback(lambda f: log.err(f))
    wfd = defer.waitForDeferred(d)
    yield wfd
    try:
        print wfd.getResult()
    except Exception as e:
        # FIXME: not sure why Error.status is a str compared to http constants
        if hasattr(e, 'status') and e.status == str(http.UNAUTHORIZED):
            print "\nError: not allowed to create databases"
            reactor.stop()
            return
        else:
            raise

    print "\nList databases on server:"
    d = foo.listDB()
    wfd = defer.waitForDeferred(d)
    yield wfd
    print wfd.getResult()
    reactor.stop()
开发者ID:kalikaneko,项目名称:txsoledad,代码行数:25,代码来源:test_create.py


示例9: incremental

    def incremental(self, _):
        wfd = defer.waitForDeferred(
            self._sourcedirIsUpdatable())
        yield wfd
        updatable = wfd.getResult()

        if not updatable:
            # blow away the old (un-updatable) directory
            wfd = defer.waitForDeferred(
                self._rmdir(self.workdir))
            yield wfd
            wfd.getResult()

            # and plan to do a checkout
            command = ['checkout', self.repourl, '.']
        else:
            # otherwise, do an update
            command = ['update']
        if self.revision:
            command.extend(['--revision', str(self.revision)])

        wfd = defer.waitForDeferred(
            self._dovccmd(command))
        yield wfd
        wfd.getResult()
开发者ID:michaelhuang,项目名称:buildbot,代码行数:25,代码来源:svn.py


示例10: test_reconfigService_class_name_change

    def test_reconfigService_class_name_change(self):
        sch1 = self.makeSched(self.ReconfigSched, 'sch1')
        self.new_config.schedulers = dict(sch1=sch1)

        wfd = defer.waitForDeferred(
            self.sm.reconfigService(self.new_config))
        yield wfd
        wfd.getResult()

        self.assertIdentical(sch1.parent, self.sm)
        self.assertIdentical(sch1.master, self.master)
        self.assertEqual(sch1.reconfig_count, 1)

        sch1_new = self.makeSched(self.ReconfigSched2, 'sch1')
        self.new_config.schedulers = dict(sch1=sch1_new)

        wfd = defer.waitForDeferred(
            self.sm.reconfigService(self.new_config))
        yield wfd
        wfd.getResult()

        # sch1 had its class name change, so sch1_new is now the active
        # instance
        self.assertIdentical(sch1_new.parent, self.sm)
        self.assertIdentical(sch1_new.master, self.master)
开发者ID:Callek,项目名称:buildbot,代码行数:25,代码来源:test_schedulers_manager.py


示例11: test_reconfigService_add_and_change_and_remove_no_reconfig

    def test_reconfigService_add_and_change_and_remove_no_reconfig(self):
        sch1 = self.makeSched(self.Sched, 'sch1', attr='alpha')
        self.new_config.schedulers = dict(sch1=sch1)

        wfd = defer.waitForDeferred(
            self.sm.reconfigService(self.new_config))
        yield wfd
        wfd.getResult()

        self.assertIdentical(sch1.parent, self.sm)
        self.assertIdentical(sch1.master, self.master)

        sch1_new = self.makeSched(self.Sched, 'sch1', attr='beta')
        sch2 = self.makeSched(self.Sched, 'sch2', attr='alpha')
        self.new_config.schedulers = dict(sch1=sch1_new, sch2=sch2)

        wfd = defer.waitForDeferred(
            self.sm.reconfigService(self.new_config))
        yield wfd
        wfd.getResult()

        # sch1 is not longer active, and sch1_new is
        self.assertIdentical(sch1.parent, None)
        self.assertIdentical(sch1.master, None)
        self.assertIdentical(sch1_new.parent, self.sm)
        self.assertIdentical(sch1_new.master, self.master)
        self.assertIdentical(sch2.parent, self.sm)
        self.assertIdentical(sch2.master, self.master)
开发者ID:Callek,项目名称:buildbot,代码行数:28,代码来源:test_schedulers_manager.py


示例12: test_queue_collapsing

    def test_queue_collapsing(self):
        # just to check that we're practicing with the right queue size (so
        # QUEUE_SIZE_FACTOR is 10)
        self.assertEqual(self.lru.max_queue, 30)

        for c in 'a' + 'x' * 27 + 'ab':
            wfd = defer.waitForDeferred(
                    self.lru.get(c))
            yield wfd
            res = wfd.getResult()
        self.check_result(res, short('b'), 27, 3)

        # at this point, we should have 'x', 'a', and 'b' in the cache, and
        # 'axx..xxab' in the queue.
        self.assertEqual(len(self.lru.queue), 30)

        # This 'get' operation for an existing key should cause compaction
        wfd = defer.waitForDeferred(
                self.lru.get('b'))
        yield wfd
        res = wfd.getResult()
        self.check_result(res, short('b'), 28, 3)

        self.assertEqual(len(self.lru.queue), 3)

        # expect a cached short('a')
        self.lru.miss_fn = self.long_miss_fn
        wfd = defer.waitForDeferred(
                self.lru.get('a'))
        yield wfd
        res = wfd.getResult()
        self.check_result(res, short('a'), 29, 3)
开发者ID:alexmos17,项目名称:build_internal,代码行数:32,代码来源:test_util_lru.py


示例13: _deferred

        def _deferred(deferredResult, caller):
            """only callable by ``newfunc``"""
            from twisted.internet import reactor

            result = None
            attempt = 0
            while attempt <= maximum:
                try:
                    wfd = defer.waitForDeferred(deferredResult)
                    yield wfd
                    result = wfd.getResult()
                    break  # didn't throw exception then we have the result
                except SystemExit:
                    result = Failure()
                    break
                except KeyboardInterrupt:
                    result = Failure()
                    break
                except:
                    attempt += 1
                    if attempt > maximum:
                        result = Failure()
                        break  # failure captured
                    d = defer.Deferred()
                    reactor.callLater(delay, d.callback, None)
                    wfd = defer.waitForDeferred(d)
                    yield wfd
                    wfd.getResult()
                    # fortunatly the caller has been set up in advance
                    caller.write(">>> Retry attempt %d" % attempt)
                    deferredResult = caller(*caller.args, **caller.kwargs)
            yield result
开发者ID:cbrinley,项目名称:droned,代码行数:32,代码来源:decorators.py


示例14: _checkCompletedBuildsets

    def _checkCompletedBuildsets(self, bsid, result):
        wfd = defer.waitForDeferred(
            self.master.db.buildsets.getSubscribedBuildsets(self.schedulerid))
        yield wfd
        subs = wfd.getResult()

        for (sub_bsid, sub_sssetid, sub_complete, sub_results) in subs:
            # skip incomplete builds, handling the case where the 'complete'
            # column has not been updated yet
            if not sub_complete and sub_bsid != bsid:
                continue

            # build a dependent build if the status is appropriate
            if sub_results in (SUCCESS, WARNINGS):
                wfd = defer.waitForDeferred(
                    self.addBuildsetForSourceStamp(setid=sub_sssetid,
                                               reason='downstream'))
                yield wfd
                wfd.getResult()

            # and regardless of status, remove the subscription
            wfd = defer.waitForDeferred(
                self.master.db.buildsets.unsubscribeFromBuildset(
                                          self.schedulerid, sub_bsid))
            yield wfd
            wfd.getResult()
开发者ID:catlee,项目名称:buildbot,代码行数:26,代码来源:dependent.py


示例15: asDict_async

    def asDict_async(self):
        result = {}

        wfd = defer.waitForDeferred(
                self.getSourceStamp())
        yield wfd
        ss = wfd.getResult()
        result['source'] = ss.asDict()

        result['builderName'] = self.getBuilderName()

        wfd = defer.waitForDeferred(
                self.getSubmitTime())
        yield wfd
        submittedAt = wfd.getResult()
        result['submittedAt'] = submittedAt

        wfd = defer.waitForDeferred(
            self.getBuilds())
        yield wfd
        builds = wfd.getResult()

        result['builds'] = [ build.asDict() for build in builds ]

        yield result
开发者ID:FabianAussems,项目名称:buildbot-forcebuild-service,代码行数:25,代码来源:buildrequest.py


示例16: _sourcedirIsUpdatable

    def _sourcedirIsUpdatable(self):
        # first, perform a stat to ensure that this is really an svn directory
        cmd = buildstep.RemoteCommand('stat', {'file': self.workdir + '/.svn',
                                               'logEnviron': self.logEnviron,})
        cmd.useLog(self.stdio_log, False)
        wfd = defer.waitForDeferred(
            self.runCommand(cmd))
        yield wfd
        wfd.getResult()

        if cmd.rc != 0:
            yield False
            return

        # then run 'svn info' to check that the URL matches our repourl
        wfd = defer.waitForDeferred(
            self._dovccmd(['info'], collectStdout=True))
        yield wfd
        stdout = wfd.getResult()

        # extract the URL, handling whitespace carefully so that \r\n works
        # is a line terminator
        mo = re.search('^URL:\s*(.*?)\s*$', stdout, re.M)
        yield mo and mo.group(1) == self.repourl
        return
开发者ID:michaelhuang,项目名称:buildbot,代码行数:25,代码来源:svn.py


示例17: _mergeRequests

    def _mergeRequests(self, breq, unclaimed_requests, mergeRequests_fn):
        """Use C{mergeRequests_fn} to merge C{breq} against
        C{unclaimed_requests}, where both are build request dictionaries"""
        # short circuit if there is no merging to do
        if not mergeRequests_fn or len(unclaimed_requests) == 1:
            yield [ breq ]
            return

        # we'll need BuildRequest objects, so get those first
        wfd = defer.waitForDeferred(
            defer.gatherResults(
                [ self._brdictToBuildRequest(brdict)
                  for brdict in unclaimed_requests ]))
        yield wfd
        unclaimed_request_objects = wfd.getResult()
        breq_object = unclaimed_request_objects.pop(
                unclaimed_requests.index(breq))

        # gather the mergeable requests
        merged_request_objects = [breq_object]
        for other_breq_object in unclaimed_request_objects:
            wfd = defer.waitForDeferred(
                defer.maybeDeferred(lambda :
                    mergeRequests_fn(self, breq_object, other_breq_object)))
            yield wfd
            if wfd.getResult():
                merged_request_objects.append(other_breq_object)

        # convert them back to brdicts and return
        merged_requests = [ br.brdict for br in merged_request_objects ]
        yield merged_requests
开发者ID:Callek,项目名称:buildbot,代码行数:31,代码来源:builder.py


示例18: SubmitTryJobChanges

def SubmitTryJobChanges(self, changes):
  """ Override of SVNPoller.submit_changes:
  http://src.chromium.org/viewvc/chrome/trunk/tools/build/scripts/master/try_job_svn.py?view=markup

  We modify it so that the patch file url is added to the build properties.
  This allows the slave to download the patch directly rather than receiving
  it from the master.
  """
  for chdict in changes:
    # pylint: disable=E1101
    parsed = self.parent.parse_options(text_to_dict(chdict['comments']))

    # 'fix' revision.
    # LKGR must be known before creating the change object.
    wfd = defer.waitForDeferred(self.parent.get_lkgr(parsed))
    yield wfd
    wfd.getResult()

    wfd = defer.waitForDeferred(self.master.addChange(
      author=','.join(parsed['email']),
      revision=parsed['revision'],
      comments='',
      properties={'patch_file_url': chdict['repository'] + '/' + \
                      chdict['files'][0]}))
    yield wfd
    change = wfd.getResult()

    self.parent.addChangeInner(chdict['files'], parsed, change.number)
开发者ID:bdacode,项目名称:skia-buildbot,代码行数:28,代码来源:monkeypatches.py


示例19: test_brdictToBuildRequest

    def test_brdictToBuildRequest(self):
        self.makeBuilder()
        # set up all of the data required for a BuildRequest object
        wfd = defer.waitForDeferred(
            self.db.insertTestData([
                fakedb.SourceStamp(id=234),
                fakedb.Buildset(id=30, sourcestampid=234, reason='foo',
                    submitted_at=1300305712, results=-1),
                fakedb.BuildRequest(id=19, buildsetid=30, buildername='bldr',
                    priority=13, submitted_at=1300305712, results=-1),
            ]))
        yield wfd
        wfd.getResult()

        wfd = defer.waitForDeferred(
            self.db.buildrequests.getBuildRequest(19))
        yield wfd
        brdict = wfd.getResult()

        wfd = defer.waitForDeferred(
            self.bldr._brdictToBuildRequest(brdict))
        yield wfd
        br = wfd.getResult()

        # just check that the BuildRequest looks reasonable -
        # test_process_buildrequest checks the whole thing
        self.assertEqual(br.reason, 'foo')

        # and check that the cross-pointers are correct
        self.assertIdentical(br.brdict, brdict)
        self.assertIdentical(brdict['brobj'], br)

        self.bldr._breakBrdictRefloops([brdict])
开发者ID:cluck,项目名称:buildbot,代码行数:33,代码来源:test_process_builder.py


示例20: test_reconfig_bad_config

    def test_reconfig_bad_config(self):
        reactor = self.make_reactor()
        self.master.reconfigService = mock.Mock(
                side_effect=lambda n : defer.succeed(None))

        wfd = defer.waitForDeferred(
            self.master.startService(_reactor=reactor))
        yield wfd
        wfd.getResult()


        # reset, since startService called reconfigService
        self.master.reconfigService.reset_mock()

        # reconfig, with a failure
        self.patch_loadConfig_fail()
        wfd = defer.waitForDeferred(
            self.master.reconfig())
        yield wfd
        wfd.getResult()

        self.master.stopService()

        self.assertLogged("reconfig aborted without")
        self.failIf(self.master.reconfigService.called)
开发者ID:gkistanova,项目名称:buildbot,代码行数:25,代码来源:test_master.py



注:本文中的twisted.internet.defer.waitForDeferred函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Python defer.Deferred类代码示例发布时间:2022-05-27
下一篇:
Python defer.wFD函数代码示例发布时间:2022-05-27
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap