-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathstress_test_all.py
More file actions
74 lines (60 loc) · 2.19 KB
/
stress_test_all.py
File metadata and controls
74 lines (60 loc) · 2.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
"""
PRUEBA DE ESTRES COMPLETA - 998 URLs
"""
import csv
import time
import json
from datetime import datetime
from oreillyauto_scraper import OReillyAutoScraper
def main():
# Leer URLs del CSV
urls = []
with open("orreily - Sheet1.csv", "r") as f:
reader = csv.DictReader(f)
for row in reader:
urls.append(row["url"])
print("=" * 70)
print(f"PRUEBA DE ESTRES - {len(urls)} URLs")
print(f"Inicio: {datetime.now().strftime('%H:%M:%S')}")
print("=" * 70)
results = {
"success": 0,
"fail": 0,
"errors": []
}
start_time = time.time()
for i, url in enumerate(urls):
scraper = OReillyAutoScraper()
html = scraper.scrape(url)
if html and len(html) > 1000:
results["success"] += 1
status = "OK"
info = scraper.extract_product_info(html)
title = info.get("title", "")[:30] if info else ""
else:
results["fail"] += 1
status = "FAIL"
title = ""
results["errors"].append(url)
# Mostrar progreso cada 10 URLs
if (i + 1) % 10 == 0 or i == 0:
elapsed = time.time() - start_time
rate = (i + 1) / elapsed if elapsed > 0 else 0
eta = (len(urls) - i - 1) / rate if rate > 0 else 0
print(f"[{i+1:4}/{len(urls)}] {status:4} | {results['success']:3} OK | {results['fail']:3} FAIL | {rate:.1f}/s | ETA: {eta:.0f}s | {title}")
time.sleep(0.5) # 0.5s entre requests
elapsed = time.time() - start_time
print("\n" + "=" * 70)
print("RESUMEN FINAL")
print("=" * 70)
print(f"Total URLs: {len(urls)}")
print(f"Exitosos: {results['success']} ({results['success']*100/len(urls):.1f}%)")
print(f"Fallidos: {results['fail']} ({results['fail']*100/len(urls):.1f}%)")
print(f"Tiempo: {elapsed:.1f}s ({elapsed/60:.1f} min)")
print(f"Velocidad: {len(urls)/elapsed:.2f} URLs/segundo")
# Guardar resultados
with open("captures/stress_test_results.json", "w") as f:
json.dump(results, f, indent=2)
print(f"\nResultados guardados en captures/stress_test_results.json")
if __name__ == "__main__":
main()