import requests
import time
from datetime import datetime
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager
URL = "https://example.com" # 측정할 대상 URL
LOG_FILE = "full_response_log.txt" # 로그 파일
def measure_backend_response_time(url):
try:
start = time.time()
response = requests.get(url, timeout=10)
end = time.time()
duration_ms = round((end - start) * 1000, 2)
return response.status_code, duration_ms
except requests.exceptions.RequestException as e:
return "ERROR", str(e)
def measure_rendering_time(url):
try:
options = Options()
options.add_argument("--headless")
options.add_argument("--no-sandbox")
options.add_argument("--disable-dev-shm-usage")
driver = webdriver.Chrome(ChromeDriverManager().install(), options=options)
start = time.time()
driver.get(url)
end = time.time()
driver.quit()
duration_ms = round((end - start) * 1000, 2)
return duration_ms
except Exception as e:
return str(e)
if __name__ == "__main__":
while True:
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# 1. requests.get()로 백엔드 응답 시간 측정
status_code, backend_time = measure_backend_response_time(URL)
# 2. Selenium으로 렌더링 시간 측정
rendering_time = measure_rendering_time(URL)
# 3. 로그 포맷 만들기
log_line = f"{timestamp} | {URL} | status: {status_code} | backend: {backend_time}ms | render: {rendering_time}ms"
# 4. 콘솔 + 파일 저장
print(log_line)
with open(LOG_FILE, "a") as f:
f.write(log_line + "\n")
# 5. 1분 대기
time.sleep(60)
2025. 4. 8. 14:38