locust 2.20.2.dev40__tar.gz → 2.20.2.dev49__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 (337) hide show
  1. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/.git-blame-ignore-revs +2 -0
  2. {locust-2.20.2.dev40/locust.egg-info → locust-2.20.2.dev49}/PKG-INFO +1 -1
  3. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/benchmarks/dispatch.py +2 -2
  4. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/running-distributed.rst +16 -20
  5. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/what-is-locust.rst +1 -3
  6. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/_version.py +2 -2
  7. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/dispatch.py +1 -1
  8. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/runners.py +5 -6
  9. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/user/task.py +1 -5
  10. {locust-2.20.2.dev40 → locust-2.20.2.dev49/locust.egg-info}/PKG-INFO +1 -1
  11. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/pyproject.toml +2 -1
  12. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/.coveragerc +0 -0
  13. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/.dockerignore +0 -0
  14. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/.gitattributes +0 -0
  15. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/.github/CONTRIBUTING.md +0 -0
  16. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
  17. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  18. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  19. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/.github/workflows/stale.yml +0 -0
  20. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/.github/workflows/tests.yml +0 -0
  21. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/.gitignore +0 -0
  22. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/.readthedocs.yaml +0 -0
  23. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/.vscode/extensions.json +0 -0
  24. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/.vscode/launch.json +0 -0
  25. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/.vscode/launch_locust.json +0 -0
  26. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/.vscode/settings.json +0 -0
  27. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/CHANGELOG.md +0 -0
  28. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/Dockerfile +0 -0
  29. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/LICENSE +0 -0
  30. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/MANIFEST.in +0 -0
  31. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/Makefile +0 -0
  32. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/README +0 -0
  33. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/README.md +0 -0
  34. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/SECURITY.md +0 -0
  35. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/Vagrantfile +0 -0
  36. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/_static/theme-overrides.css +0 -0
  37. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/api.rst +0 -0
  38. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/changelog.rst +0 -0
  39. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/conf.py +0 -0
  40. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/configuration.rst +0 -0
  41. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/custom-load-shape.rst +0 -0
  42. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/developing-locust.rst +0 -0
  43. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/extending-locust.rst +0 -0
  44. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/further-reading.rst +0 -0
  45. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/history.rst +0 -0
  46. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/images/modern-webui-splash-screenshot.png +0 -0
  47. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/images/number_of_users.png +0 -0
  48. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/images/response_times.png +0 -0
  49. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/images/total_requests_per_second.png +0 -0
  50. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/images/userclass_picker_example.png +0 -0
  51. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/images/webui-running-statistics.png +0 -0
  52. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/images/webui-splash-screenshot.png +0 -0
  53. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/increase-performance.rst +0 -0
  54. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/index.rst +0 -0
  55. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/installation.rst +0 -0
  56. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/logging.rst +0 -0
  57. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/quickstart.rst +0 -0
  58. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/requirements.txt +0 -0
  59. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/retrieving-stats.rst +0 -0
  60. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/running-cloud-integration.rst +0 -0
  61. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/running-in-debugger.rst +0 -0
  62. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/running-in-docker.rst +0 -0
  63. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/running-without-web-ui.rst +0 -0
  64. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/tasksets.rst +0 -0
  65. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/testing-other-systems.rst +0 -0
  66. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/use-as-lib.rst +0 -0
  67. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/docs/writing-a-locustfile.rst +0 -0
  68. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/add_command_line_argument.py +0 -0
  69. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/basic.py +0 -0
  70. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/browse_docs_sequence_test.py +0 -0
  71. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/browse_docs_test.py +0 -0
  72. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/custom_messages.py +0 -0
  73. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/custom_shape/double_wave.py +0 -0
  74. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/custom_shape/stages.py +0 -0
  75. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/custom_shape/staging_user_classes.py +0 -0
  76. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/custom_shape/step_load.py +0 -0
  77. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/custom_shape/wait_user_count.py +0 -0
  78. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/custom_wait_function.py +0 -0
  79. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/custom_xmlrpc_client/server.py +0 -0
  80. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/custom_xmlrpc_client/xmlrpc_locustfile.py +0 -0
  81. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/debugging.py +0 -0
  82. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/debugging_advanced.py +0 -0
  83. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/docker-compose/docker-compose.yml +0 -0
  84. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/dynamic_user_credentials.py +0 -0
  85. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/events.py +0 -0
  86. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/extend_modern_web_ui.py +0 -0
  87. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/extend_web_ui/extend.py +0 -0
  88. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/extend_web_ui/static/custom-stats-table.css +0 -0
  89. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/extend_web_ui/static/extend.js +0 -0
  90. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/extend_web_ui/templates/extend.html +0 -0
  91. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/fast_http_locust.py +0 -0
  92. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/grpc/grpc_user.py +0 -0
  93. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/grpc/hello.proto +0 -0
  94. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/grpc/hello_pb2.py +0 -0
  95. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/grpc/hello_pb2_grpc.py +0 -0
  96. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/grpc/hello_server.py +0 -0
  97. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/grpc/locustfile.py +0 -0
  98. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/locustfile.py +0 -0
  99. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/manual_stats_reporting.py +0 -0
  100. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/multiple_hosts.py +0 -0
  101. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/nested_inline_tasksets.py +0 -0
  102. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/rest.py +0 -0
  103. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/sdk_session_patching/session_patch_locustfile.py +0 -0
  104. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/semaphore_wait.py +0 -0
  105. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/stop_on_threshold.py +0 -0
  106. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/terraform/aws/README.md +0 -0
  107. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/terraform/aws/data_subnet.tf +0 -0
  108. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/terraform/aws/main.tf +0 -0
  109. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/terraform/aws/output.tf +0 -0
  110. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/terraform/aws/plan/basic.py +0 -0
  111. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/terraform/aws/provisioner.tf +0 -0
  112. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/terraform/aws/variables.tf +0 -0
  113. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/test_data_management.py +0 -0
  114. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/use_as_lib.py +0 -0
  115. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/vagrant/README.md +0 -0
  116. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/vagrant/supervisord.conf +0 -0
  117. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/web_ui_auth.py +0 -0
  118. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/examples/worker_index.py +0 -0
  119. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/generate_changelog.py +0 -0
  120. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/__init__.py +0 -0
  121. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/__main__.py +0 -0
  122. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/argument_parser.py +0 -0
  123. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/clients.py +0 -0
  124. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/contrib/__init__.py +0 -0
  125. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/contrib/fasthttp.py +0 -0
  126. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/debug.py +0 -0
  127. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/env.py +0 -0
  128. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/event.py +0 -0
  129. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/exception.py +0 -0
  130. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/html.py +0 -0
  131. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/input_events.py +0 -0
  132. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/log.py +0 -0
  133. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/main.py +0 -0
  134. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/py.typed +0 -0
  135. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/rpc/__init__.py +0 -0
  136. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/rpc/protocol.py +0 -0
  137. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/rpc/zmqrpc.py +0 -0
  138. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/shape.py +0 -0
  139. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/static/chart.js +0 -0
  140. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/static/css/application.css +0 -0
  141. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/static/css/application.css.map +0 -0
  142. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/static/css/tables.css +0 -0
  143. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/static/css/tables.css.map +0 -0
  144. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/static/echarts.common.min.js +0 -0
  145. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/static/img/favicon.ico +0 -0
  146. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/static/img/logo.png +0 -0
  147. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/static/img/ui-screenshot-charts.png +0 -0
  148. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/static/img/ui-screenshot-start-test.png +0 -0
  149. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/static/img/ui-screenshot-stats.png +0 -0
  150. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/static/img/ui-screenshot-workers.png +0 -0
  151. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/static/jquery-1.11.3.min.js +0 -0
  152. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/static/jquery.jqote2.min.js +0 -0
  153. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/static/jquery.tools.min.js +0 -0
  154. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/static/locust.js +0 -0
  155. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/static/sass/_base.sass +0 -0
  156. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/static/sass/_mixins.sass +0 -0
  157. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/static/sass/application.sass +0 -0
  158. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/static/sass/tables.sass +0 -0
  159. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/static/tasks.js +0 -0
  160. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/static/vintage.js +0 -0
  161. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/stats.py +0 -0
  162. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/templates/index.html +0 -0
  163. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/templates/report.html +0 -0
  164. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/templates/stats_data.html +0 -0
  165. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/test/__init__.py +0 -0
  166. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/test/fake_module1_for_env_test.py +0 -0
  167. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/test/fake_module2_for_env_test.py +0 -0
  168. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/test/mock_locustfile.py +0 -0
  169. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/test/mock_logging.py +0 -0
  170. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/test/test_debugging.py +0 -0
  171. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/test/test_dispatch.py +0 -0
  172. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/test/test_env.py +0 -0
  173. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/test/test_fasthttp.py +0 -0
  174. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/test/test_http.py +0 -0
  175. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/test/test_interruptable_task.py +0 -0
  176. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/test/test_load_locustfile.py +0 -0
  177. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/test/test_locust_class.py +0 -0
  178. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/test/test_log.py +0 -0
  179. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/test/test_main.py +0 -0
  180. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/test/test_old_wait_api.py +0 -0
  181. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/test/test_parser.py +0 -0
  182. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/test/test_runners.py +0 -0
  183. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/test/test_sequential_taskset.py +0 -0
  184. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/test/test_stats.py +0 -0
  185. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/test/test_tags.py +0 -0
  186. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/test/test_taskratio.py +0 -0
  187. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/test/test_users.py +0 -0
  188. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/test/test_util.py +0 -0
  189. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/test/test_wait_time.py +0 -0
  190. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/test/test_web.py +0 -0
  191. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/test/test_zmqrpc.py +0 -0
  192. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/test/testcases.py +0 -0
  193. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/test/util.py +0 -0
  194. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/user/__init__.py +0 -0
  195. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/user/inspectuser.py +0 -0
  196. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/user/sequential_taskset.py +0 -0
  197. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/user/users.py +0 -0
  198. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/user/wait_time.py +0 -0
  199. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/util/__init__.py +0 -0
  200. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/util/cache.py +0 -0
  201. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/util/deprecation.py +0 -0
  202. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/util/exception_handler.py +0 -0
  203. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/util/load_locustfile.py +0 -0
  204. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/util/rounding.py +0 -0
  205. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/util/timespan.py +0 -0
  206. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/web.py +0 -0
  207. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/.eslintrc +0 -0
  208. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/.gitignore +0 -0
  209. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/.prettierrc +0 -0
  210. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/auth.html +0 -0
  211. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/dev.html +0 -0
  212. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/dist/assets/auth-3cd88f78.js.map +0 -0
  213. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/dist/assets/favicon.ico +0 -0
  214. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/dist/assets/index-ea7131ad.js +0 -0
  215. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/dist/assets/index-ea7131ad.js.map +0 -0
  216. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/dist/assets/logo.png +0 -0
  217. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/dist/auth.html +0 -0
  218. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/dist/index.html +0 -0
  219. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/dist/report.html +0 -0
  220. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/index.html +0 -0
  221. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/package.json +0 -0
  222. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/public/assets/favicon.ico +0 -0
  223. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/public/assets/logo.png +0 -0
  224. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/public/report.html +0 -0
  225. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/App.tsx +0 -0
  226. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/Report.tsx +0 -0
  227. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/auth.tsx +0 -0
  228. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/DataTable/DataTable.test.tsx +0 -0
  229. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/DataTable/DataTable.tsx +0 -0
  230. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/ExceptionsTable/ExceptionsTable.tsx +0 -0
  231. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/FailuresTable/FailuresTable.tsx +0 -0
  232. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/Form/Form.tsx +0 -0
  233. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/Form/Select.tsx +0 -0
  234. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/Form/tests/Form.test.tsx +0 -0
  235. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/Form/tests/Select.test.tsx +0 -0
  236. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/Layout/Footer/About.tsx +0 -0
  237. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/Layout/Footer/Footer.tsx +0 -0
  238. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/Layout/Layout.tsx +0 -0
  239. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/Layout/Navbar/DarkLightToggle.tsx +0 -0
  240. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/Layout/Navbar/Navbar.tsx +0 -0
  241. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/Layout/Navbar/SwarmMonitor.test.tsx +0 -0
  242. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/Layout/Navbar/SwarmMonitor.tsx +0 -0
  243. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/LineChart/LineChart.test.tsx +0 -0
  244. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/LineChart/LineChart.tsx +0 -0
  245. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/LogViewer/LogViewer.tsx +0 -0
  246. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/LogViewer/tests/LogViewer.test.tsx +0 -0
  247. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/LogViewer/tests/useLogViewer.test.tsx +0 -0
  248. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/LogViewer/useLogViewer.ts +0 -0
  249. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/Modal/Modal.tsx +0 -0
  250. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/Reports/Reports.test.tsx +0 -0
  251. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/Reports/Reports.tsx +0 -0
  252. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/ResponseTimeTable/ResponseTimeTable.test.tsx +0 -0
  253. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/ResponseTimeTable/ResponseTimeTable.tsx +0 -0
  254. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/StateButtons/EditButton.tsx +0 -0
  255. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/StateButtons/NewTestButton.tsx +0 -0
  256. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/StateButtons/ResetButton.tsx +0 -0
  257. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/StateButtons/StateButtons.tsx +0 -0
  258. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/StateButtons/StopButton.tsx +0 -0
  259. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/StateButtons/tests/ResetButton.test.tsx +0 -0
  260. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/StateButtons/tests/StateButtons.test.tsx +0 -0
  261. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/StateButtons/tests/StopButton.test.tsx +0 -0
  262. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/StatsTable/StatsTable.tsx +0 -0
  263. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/SwarmCharts/SwarmCharts.tsx +0 -0
  264. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/SwarmForm/SwarmCustomParameters.tsx +0 -0
  265. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/SwarmForm/SwarmEditForm.tsx +0 -0
  266. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/SwarmForm/SwarmForm.tsx +0 -0
  267. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/SwarmForm/tests/SwarmCustomParameters.test.tsx +0 -0
  268. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/SwarmForm/tests/SwarmEditForm.test.tsx +0 -0
  269. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/SwarmForm/tests/SwarmForm.test.tsx +0 -0
  270. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/SwarmRatios/SwarmRatios.test.tsx +0 -0
  271. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/SwarmRatios/SwarmRatios.tsx +0 -0
  272. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/Table/Table.test.tsx +0 -0
  273. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/Table/Table.tsx +0 -0
  274. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/Tabs/Tabs.constants.tsx +0 -0
  275. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/Tabs/Tabs.test.tsx +0 -0
  276. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/Tabs/Tabs.tsx +0 -0
  277. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/components/WorkersTable/WorkersTable.tsx +0 -0
  278. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/constants/swarm.tsx +0 -0
  279. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/constants/theme.ts +0 -0
  280. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/global.d.ts +0 -0
  281. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/hooks/tests/useNotifications.test.tsx +0 -0
  282. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/hooks/tests/useSortByField.test.tsx +0 -0
  283. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/hooks/tests/useSwarmUi.test.tsx +0 -0
  284. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/hooks/useInterval.ts +0 -0
  285. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/hooks/useNotifications.ts +0 -0
  286. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/hooks/useSortByField.ts +0 -0
  287. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/hooks/useSwarmUi.ts +0 -0
  288. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/index.tsx +0 -0
  289. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/redux/api/swarm.ts +0 -0
  290. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/redux/hooks.ts +0 -0
  291. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/redux/slice/logViewer.slice.ts +0 -0
  292. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/redux/slice/notification.slice.ts +0 -0
  293. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/redux/slice/root.slice.ts +0 -0
  294. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/redux/slice/swarm.slice.ts +0 -0
  295. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/redux/slice/tests/ui.slice.test.ts +0 -0
  296. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/redux/slice/theme.slice.ts +0 -0
  297. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/redux/slice/ui.slice.ts +0 -0
  298. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/redux/slice/url.slice.ts +0 -0
  299. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/redux/store.ts +0 -0
  300. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/redux/utils.ts +0 -0
  301. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/styles/theme.ts +0 -0
  302. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/test/constants.ts +0 -0
  303. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/test/mocks/statsRequest.mock.ts +0 -0
  304. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/test/mocks/swarmState.mock.ts +0 -0
  305. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/test/setup.ts +0 -0
  306. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/test/testUtils.tsx +0 -0
  307. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/types/auth.types.ts +0 -0
  308. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/types/swarm.types.ts +0 -0
  309. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/types/tab.types.ts +0 -0
  310. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/types/table.types.ts +0 -0
  311. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/types/ui.types.ts +0 -0
  312. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/utils/number.ts +0 -0
  313. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/utils/object.ts +0 -0
  314. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/utils/string.ts +0 -0
  315. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/utils/tests/number.test.ts +0 -0
  316. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/utils/tests/object.test.ts +0 -0
  317. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/utils/tests/string.test.ts +0 -0
  318. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/utils/tests/url.test.ts +0 -0
  319. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/src/utils/url.ts +0 -0
  320. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/tsconfig.json +0 -0
  321. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/vite.config.ts +0 -0
  322. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/vitest.config.ts +0 -0
  323. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust/webui/yarn.lock +0 -0
  324. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust.egg-info/SOURCES.txt +0 -0
  325. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust.egg-info/dependency_links.txt +0 -0
  326. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust.egg-info/entry_points.txt +0 -0
  327. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust.egg-info/not-zip-safe +0 -0
  328. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust.egg-info/requires.txt +0 -0
  329. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/locust.egg-info/top_level.txt +0 -0
  330. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/package.json +0 -0
  331. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/scripts/locustfile.py +0 -0
  332. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/scripts/run-disributed-headless.sh +0 -0
  333. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/scripts/run-disributed-web.sh +0 -0
  334. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/scripts/run-local-headless.sh +0 -0
  335. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/scripts/run-local-web.sh +0 -0
  336. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/setup.cfg +0 -0
  337. {locust-2.20.2.dev40 → locust-2.20.2.dev49}/tox.ini +0 -0
@@ -7,3 +7,5 @@
7
7
  313b80f27f525441c449593a3aeaf38389f63c13
8
8
  # upgrade typing annotations using fix-future-annotations
9
9
  b5324820b299b1fe7da0608f0cc8ec47f58b1e40
10
+ # upgrade code style to 3.8 using pyupgrade
11
+ 60f3bceacc4ab9567433d40ae3ed280750f55ff1
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: locust
3
- Version: 2.20.2.dev40
3
+ Version: 2.20.2.dev49
4
4
  Summary: Developer friendly load testing framework
5
5
  License: MIT
6
6
  Project-URL: Homepage, https://locust.io/
@@ -632,8 +632,8 @@ if __name__ == "__main__":
632
632
  print()
633
633
  print(table)
634
634
 
635
- with open(f"results-dispatch-benchmarks-{int(now)}.txt", "wt") as file:
635
+ with open(f"results-dispatch-benchmarks-{int(now)}.txt", "w") as file:
636
636
  file.write(table.get_string())
637
637
 
638
- with open(f"results-dispatch-benchmarks-{int(now)}.json", "wt") as file:
638
+ with open(f"results-dispatch-benchmarks-{int(now)}.json", "w") as file:
639
639
  file.write(table.get_json_string())
@@ -4,29 +4,25 @@
4
4
  Distributed load generation
5
5
  ===========================
6
6
 
7
- A single process running Locust can simulate a reasonably high throughput. For a simple test plan it should be able to make many hundreds of requests per second, thousands if you use :ref:`FastHttpUser <increase-performance>`.
7
+ A single process running Locust can simulate a reasonably high throughput. For a simple test plan and small payloads it can make more than a thousand requests per second, possibly over ten thousand if you use :ref:`FastHttpUser <increase-performance>`.
8
8
 
9
- But if your test plan is complex or you want to run even more load, you'll need to scale out to multiple processes, maybe even multiple machines. Because Python cannot fully utilize more than one core per process (see `GIL <https://realpython.com/python-gil/>`_), you may need to run **one worker instance per processor core** in order to have access to all your computing power.
9
+ But if your test plan is complex or you want to run even more load, you'll need to scale out to multiple processes, maybe even multiple machines. Fortunately, Locust supports distributed runs out of the box.
10
10
 
11
- To do this, you start one instance of Locust in master mode using the ``--master`` flag and multiple worker instances using the ``--worker`` flag. If the workers are not on the same machine as the master you use ``--master-host`` to point them to the IP/hostname of the machine running the master.
11
+ To do this, you start one instance of Locust with the ``--master`` flag and one or more using the ``--worker`` flag. The master instance runs Locust's web interface, and tells the workers when to spawn/stop Users. The worker instances run your Users and send statistics back to the master. The master instance doesn't run any Users itself.
12
12
 
13
- To make this easier, you can use the ``--processes`` flag to launch multiple instances. By default it will launch a master process and the specified number of worker processes. Used in combination with ``--worker`` it will only launch the workers.
13
+ To simplify startup, you can use the ``--processes`` flag. It will launch a master process and the specified number of worker processes. Used in combination with ``--worker`` it will only launch workers. ``--processes`` relies on `fork() <https://linux.die.net/man/3/fork>`_ so it doesn't work on Windows.
14
14
 
15
15
  .. note::
16
- ``--processes`` was introduced in Locust 2.19 and is somewhat experimental. Child processes are launched using fork, which is not available in Windows.
17
-
18
- The master instance runs Locust's web interface, and tells the workers when to spawn/stop Users. The worker instances run your Users and send statistics back to the master. The master instance doesn't run any Users itself.
19
-
20
- Both the master and worker machines must have a copy of the locustfile when running Locust distributed.
16
+ Because Python cannot fully utilize more than one core per process (see `GIL <https://realpython.com/python-gil/>`_), you need to run one worker instance per processor core in order to have access to all your computing power.
21
17
 
22
18
  .. note::
23
- There is almost no limit to how many *Users* you can run per worker. Locust/gevent can run thousands or even tens of thousands of Users per process just fine, as long as their total request rate (RPS) is not too high.
19
+ There is almost no limit to how many Users you can run per worker. Locust/gevent can run thousands or even tens of thousands of Users per process just fine, as long as their total request rate (RPS) is not too high.
24
20
 
25
21
  .. note::
26
- If Locust is getting close to running out of CPU resources, it will log a warning. If there is no warning, you can be pretty sure your test is not limited by load generator CPU.
22
+ If Locust is getting close to running out of CPU resources, it will log a warning. If there is no warning but you are still unable to generate the expected load, then the problem must be `something else <https://github.com/locustio/locust/wiki/FAQ#increase-my-request-raterps>`_.
27
23
 
28
- Example 1: Everything on one machine
29
- ====================================
24
+ Single machine
25
+ ==============
30
26
 
31
27
  It is really simple to launch a master and 4 worker processes::
32
28
 
@@ -36,23 +32,23 @@ You can even auto-detect the number of cores in your machine and launch one work
36
32
 
37
33
  locust --processes -1
38
34
 
39
- Example 2: Multiple machines
40
- ============================
35
+ Multiple machines
36
+ =================
41
37
 
42
38
  Start locust in master mode on one machine::
43
39
 
44
40
  locust -f my_locustfile.py --master
45
41
 
46
- And then on each worker machine:
42
+ And then on each worker machine (make sure they also have a copy of the locustfile)::
47
43
 
48
44
  .. code-block:: bash
49
45
 
50
46
  locust -f my_locustfile.py --worker --master-host <your master's address> --processes 4
51
47
 
52
- Example 2.1: Multiple machines, using locust-swarm
53
- ==================================================
48
+ Multiple machines, using locust-swarm
49
+ =====================================
54
50
 
55
- Both worker and master need access to the locustfile, and when you make changes to it you'll need to restart all Locust processes. `locust-swarm <https://github.com/SvenskaSpel/locust-swarm>`_ automates this for you. It also solves the issue of firewall/network access from workers to master using SSH tunnels (this is often a problem if master is running on your workstation and workers are running in some datacenter).
51
+ Both worker and master need access to the locustfile, and when you make changes to it you'll need to restart all Locust processes. `locust-swarm <https://github.com/SvenskaSpel/locust-swarm>`_ automates this for you. It also solves the issue of firewall/network access from workers to master using SSH tunnels (this is often a problem if the master is running on your workstation and workers are running in some datacenter).
56
52
 
57
53
  .. code-block:: bash
58
54
 
@@ -98,7 +94,7 @@ Communicating across nodes
98
94
  =============================================
99
95
 
100
96
  When running Locust in distributed mode, you may want to communicate between master and worker nodes in
101
- order to coordinate data. This can be easily accomplished with custom messages using the built in messaging hooks:
97
+ order to coordinate the test. This can be easily accomplished with custom messages using the built in messaging hooks:
102
98
 
103
99
  .. code-block:: python
104
100
 
@@ -52,9 +52,7 @@ load against a dynamic website where most pages had different content for differ
52
52
  verbose configuration files to declare the tests. In Locust we took a different approach. Instead of configuration formats or UIs
53
53
  you'd get a python framework that would let you define the behaviour of your users using Python code.
54
54
 
55
- `Locust <https://en.wikipedia.org/wiki/Locust>`_ takes its name from the grasshopper species, known for their swarming behaviour.
56
-
57
- Previous versions of Locust used terminology borrowed from nature (swarming, hatching, attacking etc), but now employs more industry standard naming.
55
+ Locust takes its name from the `grasshopper species <https://en.wikipedia.org/wiki/Locust>`_, known for their swarming behaviour.
58
56
 
59
57
  :ref:`history`
60
58
 
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '2.20.2.dev40'
16
- __version_tuple__ = version_tuple = (2, 20, 2, 'dev40')
15
+ __version__ = version = '2.20.2.dev49'
16
+ __version_tuple__ = version_tuple = (2, 20, 2, 'dev49')
@@ -124,7 +124,7 @@ class UsersDispatcher(Iterator):
124
124
  worker_nodes_by_id = sorted(self._worker_nodes, key=lambda w: w.id)
125
125
 
126
126
  # Give every worker an index indicating how many workers came before it on that host
127
- workers_per_host = defaultdict(lambda: 0)
127
+ workers_per_host = defaultdict(int)
128
128
  for worker_node in worker_nodes_by_id:
129
129
  host = worker_node.id.split("_")[0]
130
130
  worker_node._index_within_host = workers_per_host[host]
@@ -215,8 +215,7 @@ class Runner:
215
215
  self.update_state(STATE_SPAWNING)
216
216
 
217
217
  logger.debug(
218
- "Spawning additional %s (%s already running)..."
219
- % (json.dumps(user_classes_spawn_count), json.dumps(self.user_classes_count))
218
+ f"Spawning additional {json.dumps(user_classes_spawn_count)} ({json.dumps(self.user_classes_count)} already running)..."
220
219
  )
221
220
 
222
221
  def spawn(user_class: str, spawn_count: int) -> list[User]:
@@ -902,7 +901,7 @@ class MasterRunner(DistributedRunner):
902
901
  self.stop(send_stop_to_client=False)
903
902
  logger.debug("Quitting...")
904
903
  for client in self.clients.all:
905
- logger.debug("Sending quit message to worker %s (index %s)" % (client.id, self.get_worker_index(client.id)))
904
+ logger.debug(f"Sending quit message to worker {client.id} (index {self.get_worker_index(client.id)})")
906
905
  self.server.send_to_client(Message("quit", None, client.id))
907
906
  gevent.sleep(0.5) # wait for final stats report from all workers
908
907
  self.greenlet.kill(block=True)
@@ -1123,7 +1122,7 @@ class MasterRunner(DistributedRunner):
1123
1122
 
1124
1123
  @property
1125
1124
  def reported_user_classes_count(self) -> dict[str, int]:
1126
- reported_user_classes_count: dict[str, int] = defaultdict(lambda: 0)
1125
+ reported_user_classes_count: dict[str, int] = defaultdict(int)
1127
1126
  for client in self.clients.ready + self.clients.spawning + self.clients.running:
1128
1127
  for name, count in client.user_classes_count.items():
1129
1128
  reported_user_classes_count[name] += count
@@ -1139,11 +1138,11 @@ class MasterRunner(DistributedRunner):
1139
1138
  If None, will send to all attached workers
1140
1139
  """
1141
1140
  if client_id:
1142
- logger.debug("Sending %s message to worker %s" % (msg_type, client_id))
1141
+ logger.debug(f"Sending {msg_type} message to worker {client_id}")
1143
1142
  self.server.send_to_client(Message(msg_type, data, client_id))
1144
1143
  else:
1145
1144
  for client in self.clients.all:
1146
- logger.debug("Sending %s message to worker %s" % (msg_type, client.id))
1145
+ logger.debug(f"Sending {msg_type} message to worker {client.id}")
1147
1146
  self.server.send_to_client(Message(msg_type, data, client.id))
1148
1147
 
1149
1148
 
@@ -423,11 +423,7 @@ class TaskSet(metaclass=TaskSetMeta):
423
423
  return random.randint(self.min_wait, self.max_wait) / 1000.0
424
424
  else:
425
425
  raise MissingWaitTimeError(
426
- "You must define a wait_time method on either the %s or %s class"
427
- % (
428
- type(self.user).__name__,
429
- type(self).__name__,
430
- )
426
+ "You must define a wait_time method on either the {type(self.user).__name__} or {type(self).__name__} class"
431
427
  )
432
428
 
433
429
  def wait(self):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: locust
3
- Version: 2.20.2.dev40
3
+ Version: 2.20.2.dev49
4
4
  Summary: Developer friendly load testing framework
5
5
  License: MIT
6
6
  Project-URL: Homepage, https://locust.io/
@@ -60,6 +60,7 @@ license-files = ["LICENSE"]
60
60
  include-package-data = false
61
61
 
62
62
  [tool.ruff]
63
+ target-version = "py38"
63
64
  line-length = 120
64
65
  extend-exclude = [
65
66
  "build",
@@ -67,7 +68,7 @@ extend-exclude = [
67
68
  "src/readthedocs-sphinx-search/",
68
69
  ]
69
70
  ignore = ["E402", "E501", "E713", "E731", "E741", "F401"]
70
- select = ["E", "F", "W"]
71
+ select = ["E", "F", "W", "UP", "FA102"]
71
72
 
72
73
  [tool.ruff.per-file-ignores]
73
74
  "examples/*" = ["F841"]
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