Этого можно добиться, реализовав пользовательский метод execute_task()
, в котором вы запускаете событие request_success.
Что-то вроде этого должно работать:
import time
class TaskReportingTaskSet(TaskSet):
def execute_task(self, task, *args, **kwargs):
start = time.time()
try:
super().execute_task(task, *args, **kwargs)
except:
events.request_failure.fire(
request_type="task",
name=task.__name__,
response_time=(time.time()-start)*1000,
response_length=0,
)
raise
else:
events.request_success.fire(
request_type="task",
name=task.__name__,
response_time=(time.time()-start)*1000,
response_length=0,
)
class UserBehavior(TaskReportingTaskSet):
tasks = ...
С приведенным выше кодом время выполнения о всех задачах будет сообщено, если TaskSet наследуется от TaskReportingTaskSet
. request_success
события должны запускаться отдельно, если вы хотите включить on_start
и on_stop
.
Если вы не хотите, чтобы HTTP-запросы сообщались, вы можете просто использовать клиент HTTP, который не не один из встроенных HTTP-клиентов Locust. Например, вы можете использовать python запросы напрямую:
import requests
def index(l):
requests.get("/")