我们安排了一个cron作业在上午7:30启动5个Elastic集群,我们还必须安排另一个cron作业在上午8:00启动spark集群中的脚本
为了在spark集群中运行脚本,5个弹性集群的状态应该是绿色的。目前,我正在监控ES集群,如果所有5个集群都不是绿色的,我将禁用cronjob以在spark集群中运行脚本。
我定义了下面的方法来发现ES集群的状态,并找出有多少ES集群是绿色的计数。
我正在使用下面的逻辑来检查是否所有(5) ES集群都是绿色的,如果没有退出,则触发函数。
def get_es_clusters_status(elastic_load_balancer)
def count_green_es_clusters(es_clusters_status)
es_clusters_status = get_es_clusters_status(lb_instances)
green_es_clusters_count=count_green_es_clusters(es_clusters_status)
print(green_es_clusters_count)
if green_es_clusters_count == 5:
print("YES There are 5 green clusters")
script_in_spark()
else:
print(" Not all 5 clusters are green exiting....")
sys.exit(1)但我想从时间模块使用睡眠功能,并等待10分钟,并再次检查绿色ES集群计数,如果它们是5,触发函数,否则等待10分钟。除非有5个ES集群,否则我不应该在spark集群中触发脚本。
发布于 2019-05-17 05:09:09
你的问题的答案相当简单。您可以使用if else语句检查是否所有集群都是绿色的,并在else部分进行休眠。下面是if else语句的样子:
while clusters!=green:
time.sleep(600) #This sleeps for 600 seconds, which is 10 minutes.
if clusters==green:
clusters=green #The last 2 lines are not needed but are a foolproof way to make sure your code breaks. 确保在代码的顶部导入时间。
https://stackoverflow.com/questions/56176395
复制相似问题