【问题标题】:Python, if a condition is met, ignore stepPython,如果满足条件,则忽略步骤
【发布时间】:2019-12-04 01:20:50
【问题描述】:

我有点像初学者,但我正在编写 wlst 脚本,基本上,如果 server_name 以 soa_sever(n) 开头,但如果 soa_server2+ 添加两分钟睡眠。

def rollstartCluster(): 
    connectAdmin()
    serverList=cmo.getServers()
    domainRuntime()
    for server in serverList:
      if server.getCluster()!=None and server.getCluster().getName()==CLUSTER_NAME:
           serverRuntimeMBean = getMBean('/ServerLifeCycleRuntimes/'+server.getName())
           serverState = serverRuntimeMBean.getState()
           server_name=server.getName()
           shutdown(server.getName(),'Server','true',120,force='true',block='true')
           counter=1
           if server_name.startswith('soa_server') and counter > 2:
             print " 2 Minute wait before starting Instance"
             systime.sleep(120)
           start(server.getName(),'Server', block="true") 
           counter= counter +1
           exit()

我添加了计数器,这样当 soa_server2+ 增加了两分钟的等待时间。 我无法按预期工作,任何帮助

【问题讨论】:

  • 每次循环你都会重置counter = 1
  • 你有缩进的问题……还是只是问题文本格式的问题?
  • @Stepan,是文本格式。
  • @Iguananaut,谢谢,我没看到我在重置计数器
  • 为什么是exit()?对None 的测试应该使用is,而不是==

标签: python wlst


【解决方案1】:

你可以利用图书馆时间:

import time

然后写: time.sleep(2*60)

【讨论】:

  • 虽然这是一个很好的建议,但由于 systime.sleep 不是默认的 Python 函数,它仍然不能解决他的问题,即他没有看到它到达睡眠调用,因为他没有永远不要将 counter 设置为会触发该调用的任何内容。此外,time.sleep(n) 的睡眠时间为 n ,而不是几分钟。
  • @dddJewelsbbb,这里的问题是 weblogic.time 包隐藏了 stdlib 时间模块。所以,当你尝试导入时间时,我得到一个错误,所以我必须使用导入时间作为 systime systime.sleep(120)
  • 谢谢大家,我能够解决这个问题,再次感谢@Iguananaut 的快速响应和有用的输入。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-26
  • 2014-06-22
  • 2016-10-14
  • 1970-01-01
  • 2014-10-05
相关资源
最近更新 更多