我们有自己的门户网站,它是用.ASP设计的。在这个门户中有多个选项卡。 为了监视每个页面及其加载时间(监视每个页面的慢度),我有以下代码。你知道吗
我在一个记事本中复制了所有的.asp页面,这个脚本将每个页面都提取到监视器中。 (希望httpauth工作) 当我试图发送电子邮件,如果状态码是200以外的时间超过0.5秒,它将拍摄邮件 但对于每个URL,它发送不同的邮件,而且它只在主题行中给出URL。 如何使我喜欢只发送一封邮件,包括所有错误与各自的网址。你知道吗
i.e.
https://example.org/node.asp - status 404
https://example.org/frame.asp - response time is 2 sec.
https://example.org/ticketgen.asp - response time is 5 sec.
https://example.org/alert.asp - status 500
下面是我的代码
#!/usr/bin/env python
import pickle, os, sys, logging
from httplib import HTTPConnection, socket
from smtplib import SMTP
from requests.auth import HTTPBasicAuth
import requests
def get_response_time(url):
return requests.get(url, auth=HTTPBasicAuth('admin', 'secpasswd')).elapsed.total_seconds()
def email_alert(message, status):
fromaddr = 'abc@mysite.com'
toaddrs = 'xyz@mysite.com'
server = SMTP('smtp.office365.com')
server.starttls()
server.login(fromaddr, 'mypasswd')
server.sendmail(fromaddr, toaddrs, 'Subject: %s\r\n%s' % (status, message))
server.quit()
def get_site_status(url):
response = get_response(url)
try:
if response == 200:
return 'up'
except AttributeError:
pass
return 'down'
def get_response(url):
'''Return response object from URL'''
try:
conn = requests.get(url, auth=HTTPBasicAuth('admin', 'secpasswd'))
#conn.request('HEAD', '/')
return conn.status_code
except socket.error:
return None
except Exception as e:
print(e)
logging.error('Bad URL:{}'.format( url))
exit(1)
def get_headers(url):
'''Gets all headers from URL request and returns'''
response = get_response(url)
try:
return getattr(response, 'getheaders')()
except AttributeError:
return 'Headers unavailable'
if __name__ == '__main__':
content = []
with open("/home/support/url_list.txt") as f:
content = f.readlines()
for url in content:
url = url.strip()
r_time = get_response_time(url)
print(r_time)
if r_time > 0.5 :
#print("Please send email", url, "as Response Time is", r_time)
email_alert(str(r_time), url)
status = get_site_status(url)
if status == "down":
#print("Send email", url, "is", status, "and Response is", get_response(url))
email_alert(str(get_site_status(url)), url)
与对每个url执行
email_alert(str(r_time), url)
不同,您可以在responses dict.中缓存每个url的响应时间,并在for url in content
循环后创建电子邮件消息。i、 电子相关问题 更多 >
编程相关推荐