本文整理汇总了Python中buildbot.util.lru.LRUCache.keys方法的典型用法代码示例。如果您正苦于以下问题:Python LRUCache.keys方法的具体用法?Python LRUCache.keys怎么用?Python LRUCache.keys使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类buildbot.util.lru.LRUCache
的用法示例。
在下文中一共展示了LRUCache.keys方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: BuilderStatus
# 需要导入模块: from buildbot.util.lru import LRUCache [as 别名]
# 或者: from buildbot.util.lru.LRUCache import keys [as 别名]
#.........这里部分代码省略.........
except Exception:
log.msg("Exception caught publishing state to %r" % w)
log.err()
def newBuild(self):
"""The Builder has decided to start a build, but the Build object is
not yet ready to report status (it has not finished creating the
Steps). Create a BuildStatus object that it can use."""
number = self.nextBuildNumber
self.nextBuildNumber += 1
# TODO: self.saveYourself(), to make sure we don't forget about the
# build number we've just allocated. This is not quite as important
# as it was before we switch to determineNextBuildNumber, but I think
# it may still be useful to have the new build save itself.
s = BuildStatus(self, self.master, number)
s.waitUntilFinished().addCallback(self._buildFinished)
return s
# buildStarted is called by our child BuildStatus instances
def buildStarted(self, s):
"""Now the BuildStatus object is ready to go (it knows all of its
Steps, its ETA, etc), so it is safe to notify our watchers."""
assert s.builder is self # paranoia
assert s not in self.currentBuilds
self.currentBuilds.append(s)
self.buildCache.get(s.number, val=s)
# now that the BuildStatus is prepared to answer queries, we can
# announce the new build to all our watchers
for w in self.watchers: # TODO: maybe do this later? callLater(0)?
try:
receiver = w.buildStarted(self.getName(), s)
if receiver:
if isinstance(receiver, type(())):
s.subscribe(receiver[0], receiver[1])
else:
s.subscribe(receiver)
d = s.waitUntilFinished()
d.addCallback(lambda s: s.unsubscribe(receiver))
except Exception:
log.msg("Exception caught notifying %r of buildStarted event" % w)
log.err()
def _buildFinished(self, s):
assert s in self.currentBuilds
s.saveYourself()
self.currentBuilds.remove(s)
name = self.getName()
results = s.getResults()
for w in self.watchers:
try:
w.buildFinished(name, s, results)
except Exception:
log.msg("Exception caught notifying %r of buildFinished event" % w)
log.err()
self.prune() # conserve disk
def asDict(self):
# Collect build numbers.
# Important: Only grab the *cached* builds numbers to reduce I/O.
current_builds = [b.getNumber() for b in self.currentBuilds]
cached_builds = sorted(set(self.buildCache.keys() + current_builds))
result = {
# Constant
# TODO(maruel): Fix me. We don't want to leak the full path.
'basedir': os.path.basename(self.basedir),
'tags': self.getTags(),
'slaves': self.slavenames,
'schedulers': [s.name for s in self.status.master.allSchedulers()
if self.name in s.builderNames],
# TODO(maruel): Add cache settings? Do we care?
# Transient
'cachedBuilds': cached_builds,
'currentBuilds': current_builds,
'state': self.getState()[0],
# lies, but we don't have synchronous access to this info; use
# asDict_async instead
'pendingBuilds': 0
}
return result
def asDict_async(self):
"""Just like L{asDict}, but with a nonzero pendingBuilds."""
result = self.asDict()
d = self.getPendingBuildRequestStatuses()
@d.addCallback
def combine(statuses):
result['pendingBuilds'] = len(statuses)
return result
return d
def getMetrics(self):
return self.botmaster.parent.metrics