在哪里编写 Locust 测试的设置和拆卸代码?

Where to write the setup and teardown code for Locust tests?

我一直在探索 Locust 以满足我们对 Spark 的负载测试要求,但坚持执行一些非常基本的任务;文档似乎也很有限。

坚持 how/where 编写我的设置和拆卸代码,无论用户数量如何,只需要 运行 一次。尝试使用文档中给出的以下示例;但是在 events.test_start 下编写的代码不会 运行 似乎我无法在 SparkJob class 下的任何地方使用属性 'sc'。知道如何在我的 SparkJob class 中访问在 on_test_start 方法下创建的 spark 实例吗?

from locust import User, TaskSet, task, between
from locust import events
from pyspark import SparkConf, SparkContext
from pyspark.sql import SparkSession

class SparkJob(TaskSet):

    @task
    def submit_jobs(self):
    # sample spark job

class SparkUser(User):

    host = xxx
    wait_time = xxx
    tasks = [SparkJob]


@events.test_start.add_listener
def on_test_start(**kw):
    conf = SparkConf().setAppName(conn_st['app'])
    sc = SparkContext(master=conn_st['master'], conf=conf)
    #spark = SparkSession(sc)
    return sc

@events.test_stop.add_listener
def on_test_stop(**kw):
    #spark.stop()
    sc.stop()

我对 Spark 一无所知,但是将 scspark 设为全局变量应该适合您。所以像:

from locust import User, TaskSet, task, between
from locust import events
from pyspark import SparkConf, SparkContext
from pyspark.sql import SparkSession

spark: SparkSession = None

class SparkJob(TaskSet):

    @task
    def submit_jobs(self):
    # sample spark job
        spark.do_stuff()

class SparkUser(User):

    host = xxx
    wait_time = xxx
    tasks = [SparkJob]


@events.test_start.add_listener
def on_test_start(**kw):
    global spark
    conf = SparkConf().setAppName(conn_st['app'])
    sc = SparkContext(master=conn_st['master'], conf=conf)
    spark = SparkSession(sc)

@events.test_stop.add_listener
def on_test_stop(**kw):
    spark.stop()

您可以进一步查看 Python 全局变量。简而言之,如果您要分配或更改它,您只需要 global ,否则它应该能够为您推断全局。不过,您可以明确地将其添加到每个地方。