locustfile.py 948 B

123456789101112131415161718192021222324252627282930313233
  1. import locust
  2. from locust import task, HttpUser
  3. import logging
  4. from requests.adapters import HTTPAdapter
  5. from requests.packages.urllib3.util.retry import Retry
  6. logger = logging.getLogger(__name__)
  7. class TimeoutHTTPAdapter(HTTPAdapter):
  8. def __init__(self, timeout, *args, **kwargs):
  9. self.timeout = timeout
  10. super().__init__(*args, **kwargs)
  11. def send(self, request, **kwargs):
  12. timeout = kwargs.get("timeout")
  13. if timeout is None:
  14. kwargs["timeout"] = self.timeout
  15. return super().send(request, **kwargs)
  16. class ServeTest(HttpUser):
  17. wait_time = locust.wait_time.constant_throughput(10)
  18. def on_start(self):
  19. retries = Retry(
  20. total=3, backoff_factor=0.5, status_forcelist=[429, 500, 502, 503, 504]
  21. )
  22. self.client.mount("http://", TimeoutHTTPAdapter(max_retries=retries, timeout=1))
  23. @task
  24. def index(self):
  25. self.client.get("/?val=3")