在哪里编写 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 一无所知,但是将 sc
或 spark
设为全局变量应该适合您。所以像:
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
,否则它应该能够为您推断全局。不过,您可以明确地将其添加到每个地方。
我一直在探索 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 一无所知,但是将 sc
或 spark
设为全局变量应该适合您。所以像:
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
,否则它应该能够为您推断全局。不过,您可以明确地将其添加到每个地方。