Locust

An open-source load-testing tool that lets you define user behavior in plain Python.

Tool
PyPI
v2.46.3
28,077stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
93/100Excellent
Development Activity92
Maintenance96
Community84
Maturity60
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
84/100Excellent
Architecture86
Code Quality86
Innovation83
Learning Curve80

Locust is an open-source performance and load-testing tool for HTTP and other protocols. Instead of a GUI or a domain-specific language, you describe your simulated users as plain Python code, so test scenarios can loop, branch, and compute using ordinary programming constructs and be version-controlled like any other code.

Locust runs each simulated user in its own greenlet, letting you write blocking-style Python while swarming a target system with thousands or millions of concurrent users, and it scales horizontally across multiple machines. Tests run from the command line or a web-based UI that shows throughput, response times, and errors in real time, with results exportable for later analysis.

What You Get

  • A Python API (HttpUser, task, between, and more) for defining user behavior in code
  • A real-time web UI showing throughput, response times, and error rates
  • Command-line and headless execution for CI and automation
  • Distributed load generation across multiple worker processes and machines
  • Pluggable support for HTTP and, via custom clients, other protocols

Common Use Cases

  • Load and stress testing web applications and HTTP APIs
  • Running performance regression tests as part of CI pipelines
  • Simulating realistic user journeys with conditional logic and think time
  • Scaling load generation across many machines to reach high concurrency

Under The Hood

Architecture - Locust is built on gevent greenlets: the user/ package defines the User/HttpUser base classes and task model, runners.py orchestrates local and distributed execution (master/worker coordination), and dispatch.py allocates users across workers. env.py ties together the environment, stats.py aggregates throughput/latency/error metrics, event.py provides the hook system, and web.py plus the webui/ assets serve the real-time dashboard. Distributed messaging lives in the rpc/ package, clients.py implements the HTTP client, and main.py/argument_parser.py drive the command-line entry point.

Tech Stack - Written in Python (3.x, with a bundled py.typed marker), Locust relies on gevent for greenlet-based concurrency, Flask for its web UI, and requests-style HTTP clients; it also ships optional OpenTelemetry integration. The project is packaged for PyPI and distributed as the locust command.

Code Quality - The repository is mature and heavily maintained, with a dedicated test/ suite, nearly 400 contributors, 100+ releases, and very active development. Modules are cleanly separated by responsibility (users, runners, stats, web, rpc), and the codebase carries type hints.

API Design - The authoring experience is a major strength: a user test is a small Python class with @task-decorated methods and a wait_time, which reads naturally and needs almost no boilerplate. Because scenarios are ordinary Python, developers use their normal IDE, libraries, and version control, and extensive docs at docs.locust.io ease onboarding for both the CLI and distributed modes.

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search