locust 2.46.5.dev8__tar.gz → 2.46.6.dev2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/PKG-INFO +1 -1
  2. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/__init__.py +2 -1
  3. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/_version.py +2 -2
  4. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/user/wait_time.py +27 -0
  5. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/.gitignore +0 -0
  6. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/LICENSE +0 -0
  7. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/README.md +0 -0
  8. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/hatch_build.py +0 -0
  9. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/__main__.py +0 -0
  10. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/argument_parser.py +0 -0
  11. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/clients.py +0 -0
  12. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/contrib/__init__.py +0 -0
  13. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/contrib/csv_request_logger.py +0 -0
  14. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/contrib/dns.py +0 -0
  15. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/contrib/fasthttp.py +0 -0
  16. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/contrib/milvus.py +0 -0
  17. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/contrib/mongodb.py +0 -0
  18. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/contrib/mqtt.py +0 -0
  19. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/contrib/oai.py +0 -0
  20. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/contrib/postgres.py +0 -0
  21. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/contrib/qdrant.py +0 -0
  22. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/contrib/socketio.py +0 -0
  23. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/debug.py +0 -0
  24. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/dispatch.py +0 -0
  25. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/env.py +0 -0
  26. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/event.py +0 -0
  27. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/exception.py +0 -0
  28. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/html.py +0 -0
  29. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/input_events.py +0 -0
  30. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/log.py +0 -0
  31. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/main.py +0 -0
  32. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/opentelemetry.py +0 -0
  33. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/py.typed +0 -0
  34. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/rpc/__init__.py +0 -0
  35. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/rpc/protocol.py +0 -0
  36. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/rpc/zmqrpc.py +0 -0
  37. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/runners.py +0 -0
  38. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/shape.py +0 -0
  39. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/stats.py +0 -0
  40. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/user/__init__.py +0 -0
  41. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/user/inspectuser.py +0 -0
  42. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/user/markov_taskset.py +0 -0
  43. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/user/sequential_taskset.py +0 -0
  44. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/user/task.py +0 -0
  45. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/user/users.py +0 -0
  46. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/util/__init__.py +0 -0
  47. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/util/cache.py +0 -0
  48. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/util/date.py +0 -0
  49. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/util/deprecation.py +0 -0
  50. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/util/directory.py +0 -0
  51. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/util/exception_handler.py +0 -0
  52. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/util/load_locustfile.py +0 -0
  53. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/util/rounding.py +0 -0
  54. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/util/timespan.py +0 -0
  55. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/util/url.py +0 -0
  56. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/web.py +0 -0
  57. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/webui/dist/assets/favicon-dark.png +0 -0
  58. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/webui/dist/assets/favicon-light.png +0 -0
  59. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/webui/dist/assets/graphs-dark.png +0 -0
  60. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/webui/dist/assets/graphs-light.png +0 -0
  61. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/webui/dist/assets/src-pSlzKFX1.js +0 -0
  62. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/webui/dist/assets/terminal.gif +0 -0
  63. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/webui/dist/assets/testruns-dark.png +0 -0
  64. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/webui/dist/assets/testruns-light.png +0 -0
  65. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/webui/dist/auth.html +0 -0
  66. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/webui/dist/index.html +0 -0
  67. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/locust/webui/dist/report.html +0 -0
  68. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/pyproject.toml +0 -0
  69. {locust-2.46.5.dev8 → locust-2.46.6.dev2}/pytest_locust/plugin.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: locust
3
- Version: 2.46.5.dev8
3
+ Version: 2.46.6.dev2
4
4
  Summary: Developer-friendly load testing framework
5
5
  Project-URL: Homepage, https://locust.cloud/
6
6
  Project-URL: Repository, https://github.com/locustio/locust
@@ -31,7 +31,7 @@ from .user.markov_taskset import MarkovTaskSet, transition, transitions
31
31
  from .user.sequential_taskset import SequentialTaskSet
32
32
  from .user.task import TaskSet, tag, task
33
33
  from .user.users import HttpUser, User
34
- from .user.wait_time import between, constant, constant_pacing, constant_throughput
34
+ from .user.wait_time import between, constant, constant_pacing, constant_throughput, poisson
35
35
 
36
36
  events = Events()
37
37
 
@@ -51,6 +51,7 @@ __all__ = (
51
51
  "constant",
52
52
  "constant_pacing",
53
53
  "constant_throughput",
54
+ "poisson",
54
55
  "events",
55
56
  "LoadTestShape",
56
57
  "run_single_user",
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '2.46.5.dev8'
22
- __version_tuple__ = version_tuple = (2, 46, 5, 'dev8')
21
+ __version__ = version = '2.46.6.dev2'
22
+ __version_tuple__ = version_tuple = (2, 46, 6, 'dev2')
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -84,3 +84,30 @@ def constant_throughput(task_runs_per_second: float) -> Callable[["User"], float
84
84
  the next task.
85
85
  """
86
86
  return constant_pacing(1 / task_runs_per_second)
87
+
88
+
89
+ def poisson(rate: float) -> Callable[["User"], float]:
90
+ """
91
+ Returns a function that will return a random wait time sampled from an exponential
92
+ distribution with mean ``1/rate`` seconds. Tasks will therefore arrive according to a
93
+ Poisson process with mean rate ``rate`` tasks per second, which is a good approximation
94
+ of how real users arrive.
95
+
96
+ The average number of task runs per second will be ``rate``, but unlike
97
+ :py:func:`constant_throughput <locust.wait_time.constant_throughput>` the individual
98
+ intervals vary randomly, so bursts and quiet periods occur naturally.
99
+
100
+ Example::
101
+
102
+ class MyUser(User):
103
+ wait_time = poisson(2) # on average, each user runs 2 tasks per second
104
+ @task
105
+ def my_task(self):
106
+ ...
107
+
108
+ If you have multiple requests in a task your RPS will of course be higher than the
109
+ specified throughput.
110
+ """
111
+ if rate <= 0:
112
+ raise ValueError(f"poisson() requires a positive rate, got: {rate}")
113
+ return lambda instance: random.expovariate(rate)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes