У меня есть следующий код Python:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import json
import requests
import sys
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
#Function to get the health of the cluster
def getClusterHealth():
try:
response = requests.get('http://127.0.0.1:2379/health')
data = response.json()
if data['health']=="true":
print("Cluster is healthy")
getClusterMetrics()
elif data['health']!="true":
print ("Cluster is not healthy")
sendEmail()
except requests.exceptions.ConnectionError as e:
print e
print("Cluster is down")
sendEmail()
#Function to get the netrics of the cluster
def getClusterMetrics():
try:
response = requests.get('http://127.0.0.1:2379/metrics')
with open('clusterMetrics.txt','w') as f:
f.write(response.text)
f.close()
print("Cluster Metrics saved in file: clusterMetrics.txt")
except requests.exceptions.ConnectionError as e:
print e
sendEmail()
#Function to send emails in case of failures
def sendEmail():
msg = MIMEText("etcd Cluster Down Sample Mail")
sender = "etcd Cluster - 10.35.14.141"
recipients = ["sample@email.com"]
msg["Subject"] = "etcd Cluster Monitoring Test Multiple ID"
msg['From'] = sender
msg['To'] = ", ".join(recipients)
s = smtplib.SMTP('localhost')
s.sendmail(sender,recipients,msg.as_string())
s.quit()
if __name__ == "__main__":
if(len(sys.argv) < 2):
print("Usage : python etcdMonitoring.py [health|metrics]")
elif(sys.argv[1] == "health"):
getClusterHealth()
elif(sys.argv[1] == "metrics"):
getClusterMetrics()
Я хочу запустить весь сценарий X секунд, взятых в качестве ввода от пользователя. Однако, используя этот вход, я хочу сделать некоторые функции, основанные на таймере, в моих функциях. Он должен показывать вывод / делать определенные вещи, как я хочу (здесь не могу показать код), но внутренние функции будут работать для кратных входных данных, данных пользователем. Например, если введено значение 30, сценарий должен запускаться каждые 30 секунд, но я должен иметь возможность проверять работоспособность кластера каждые две минуты.