4

I'm using locust as a library in my Python script (from the example in the docs) and I want to output the stats data into a CSV file. I found out that there is a StatsCSVFileWriter class and created it, but I don't know how to "tell" it to write the file at the end.

Here's my code so far:

def start_locust(time_hh: int, time_mm: int, user: int, spawn_rate: int):
    # setup Environment and Runner
    env = Environment(user_classes=[User])
    env.create_local_runner()

    # CSV writer
    stats_path = os.path.join(os.getcwd(), "data")
    csv_writer = StatsCSVFileWriter(
        environment=env,
        base_filepath=stats_path,
        full_history=True,
        percentiles_to_report=[90.0, 95.0]
    )

    # start a WebUI instance
    env.create_web_ui(host="127.0.0.1", port=8089, stats_csv_writer=csv_writer)

    # start a greenlet that periodically outputs the current stats
    gevent.spawn(stats_printer(env.stats))

    # start a greenlet that saves current stats to history
    gevent.spawn(stats_history, env.runner)

    # start the test
    env.runner.start(user_count=user, spawn_rate=spawn_rate)

    # stop the runner in a given time
    time_in_seconds = (time_hh * 60 * 60) + (time_mm * 60)
    gevent.spawn_later(time_in_seconds, lambda: env.runner.quit())

    # wait for the greenlets
    env.runner.greenlet.join()

    # stop the web server for good measures
    env.web_ui.stop()
pavelsaman
  • 7,399
  • 1
  • 14
  • 32
Angi2412
  • 81
  • 6

2 Answers2

4

Seem like I only had to spawn the CSV writer I created:

gevent.spawn(csv_writer)

Angi2412
  • 81
  • 6
0
# Writing all the stats to a CSV file
gevent.spawn(csv_writer.stats_writer)