locust 2.46.6.dev8__tar.gz → 2.46.6.dev12__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.
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/PKG-INFO +1 -1
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/_version.py +2 -2
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/contrib/fasthttp.py +2 -2
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/runners.py +8 -2
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/web.py +9 -2
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/pyproject.toml +3 -1
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/.gitignore +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/LICENSE +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/README.md +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/hatch_build.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/__init__.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/__main__.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/argument_parser.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/clients.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/contrib/__init__.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/contrib/csv_request_logger.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/contrib/dns.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/contrib/milvus.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/contrib/mongodb.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/contrib/mqtt.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/contrib/oai.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/contrib/postgres.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/contrib/qdrant.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/contrib/socketio.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/debug.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/dispatch.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/env.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/event.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/exception.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/html.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/input_events.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/log.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/main.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/opentelemetry.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/py.typed +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/rpc/__init__.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/rpc/protocol.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/rpc/zmqrpc.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/shape.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/stats.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/user/__init__.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/user/inspectuser.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/user/markov_taskset.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/user/sequential_taskset.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/user/task.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/user/users.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/user/wait_time.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/util/__init__.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/util/cache.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/util/date.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/util/deprecation.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/util/directory.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/util/exception_handler.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/util/load_locustfile.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/util/rounding.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/util/timespan.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/util/url.py +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/webui/dist/assets/favicon-dark.png +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/webui/dist/assets/favicon-light.png +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/webui/dist/assets/graphs-dark.png +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/webui/dist/assets/graphs-light.png +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/webui/dist/assets/src-pSlzKFX1.js +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/webui/dist/assets/terminal.gif +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/webui/dist/assets/testruns-dark.png +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/webui/dist/assets/testruns-light.png +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/webui/dist/auth.html +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/webui/dist/index.html +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/locust/webui/dist/report.html +0 -0
- {locust-2.46.6.dev8 → locust-2.46.6.dev12}/pytest_locust/plugin.py +0 -0
|
@@ -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.6.
|
|
22
|
-
__version_tuple__ = version_tuple = (2, 46, 6, '
|
|
21
|
+
__version__ = version = '2.46.6.dev12'
|
|
22
|
+
__version_tuple__ = version_tuple = (2, 46, 6, 'dev12')
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -247,7 +247,7 @@ class FastHttpSession:
|
|
|
247
247
|
headers["Accept"] = "application/json"
|
|
248
248
|
|
|
249
249
|
if not allow_redirects:
|
|
250
|
-
|
|
250
|
+
old_redirect_resonse_codes = self.client.redirect_resonse_codes
|
|
251
251
|
self.client.redirect_resonse_codes = frozenset()
|
|
252
252
|
|
|
253
253
|
start_perf_counter = time.perf_counter()
|
|
@@ -264,7 +264,7 @@ class FastHttpSession:
|
|
|
264
264
|
}
|
|
265
265
|
|
|
266
266
|
if not allow_redirects:
|
|
267
|
-
self.client.redirect_resonse_codes =
|
|
267
|
+
self.client.redirect_resonse_codes = old_redirect_resonse_codes
|
|
268
268
|
|
|
269
269
|
request_meta["response_length"] = 0 # default value, if length cannot be determined
|
|
270
270
|
|
|
@@ -1143,8 +1143,14 @@ class MasterRunner(DistributedRunner):
|
|
|
1143
1143
|
self.server.send_to_client(Message("quit", None, msg.node_id))
|
|
1144
1144
|
case "spawning_complete":
|
|
1145
1145
|
# a worker finished spawning (this happens multiple times during rampup)
|
|
1146
|
-
|
|
1147
|
-
|
|
1146
|
+
try:
|
|
1147
|
+
self.clients[msg.node_id].state = STATE_RUNNING
|
|
1148
|
+
self.clients[msg.node_id].user_classes_count = msg.data["user_classes_count"]
|
|
1149
|
+
except KeyError:
|
|
1150
|
+
logger.warning(
|
|
1151
|
+
f"Got spawning_complete message from unknown worker {msg.node_id}. Asking worker to quit."
|
|
1152
|
+
)
|
|
1153
|
+
self.server.send_to_client(Message("quit", None, msg.node_id))
|
|
1148
1154
|
case "logs":
|
|
1149
1155
|
self.environment.update_worker_logs(msg.data)
|
|
1150
1156
|
case "quit":
|
|
@@ -29,6 +29,7 @@ from flask import (
|
|
|
29
29
|
from flask_cors import CORS
|
|
30
30
|
from flask_login import LoginManager, login_required
|
|
31
31
|
from gevent import pywsgi
|
|
32
|
+
from jinja2 import TemplateNotFound
|
|
32
33
|
|
|
33
34
|
from . import __version__ as version
|
|
34
35
|
from . import argument_parser, stats
|
|
@@ -206,8 +207,14 @@ class WebUI:
|
|
|
206
207
|
if not environment.runner:
|
|
207
208
|
return make_response("Error: Locust Environment does not have any runner", 500)
|
|
208
209
|
self.update_template_args()
|
|
209
|
-
|
|
210
|
-
|
|
210
|
+
try:
|
|
211
|
+
return render_template("index.html", template_args=self.template_args)
|
|
212
|
+
except TemplateNotFound:
|
|
213
|
+
return make_response(
|
|
214
|
+
"Web UI assets are missing. If running Locust from source, "
|
|
215
|
+
"please refer to docs/developing-locust.rst for instructions on building the Web UI.",
|
|
216
|
+
500,
|
|
217
|
+
)
|
|
211
218
|
|
|
212
219
|
@app_blueprint.route("/swarm", methods=["POST"])
|
|
213
220
|
@self.auth_required_if_enabled
|
|
@@ -84,6 +84,7 @@ lint = [
|
|
|
84
84
|
"ruff==0.15.12",
|
|
85
85
|
"mypy>=1.13.0,<1.15.0",
|
|
86
86
|
"types-requests==2.32.4.20250809",
|
|
87
|
+
"typos>=1.50.1"
|
|
87
88
|
]
|
|
88
89
|
release = ["twine>=5.1.1,<6.0.0"]
|
|
89
90
|
docs = [
|
|
@@ -273,6 +274,7 @@ python = ["3.12"]
|
|
|
273
274
|
all = [""]
|
|
274
275
|
types = ["mypy locust/"]
|
|
275
276
|
format = ["ruff check .", "ruff format --check"]
|
|
277
|
+
spelling = ["typos ."]
|
|
276
278
|
|
|
277
279
|
|
|
278
280
|
## Hatch docs building environment
|
|
@@ -294,7 +296,7 @@ filterwarnings = [
|
|
|
294
296
|
# but that isn't always possible
|
|
295
297
|
"ignore::gevent.monkey.MonkeyPatchWarning",
|
|
296
298
|
# "This process is multi-threaded, use of fork() may lead to deadlocks in the child." started happening in Python 3.12
|
|
297
|
-
# It could potentially be a real issue, but I
|
|
299
|
+
# It could potentially be a real issue, but I don't think
|
|
298
300
|
"ignore::DeprecationWarning:gevent",
|
|
299
301
|
|
|
300
302
|
]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|