问题描述
我正在研究如何使用Locust进行视频流播放器的负载测试,但是还无法使其正常工作。基本上,我有一个加载播放器的播放URL,并且我可以将参数传递给播放器,包括autoplay=true
。
因此,我尝试通过autoplay参数访问该播放URL,但这似乎还不够。如果您熟悉视频流,则视频通常分为2到10秒的块;每个块都有一个唯一的URI,玩家可以在其中获取下一个分段。
蝗虫目前有可能吗?
这是我的完整代码:
from locust import HttpUser,task,between
class GenerateViewers(HttpUser):
wait_time = between(1,5)
@task
def index(self):
self.client.get("/")
然后,我可以打开Locust UI并输入测试参数,包括播放器URL。我认为发生的情况是蝗虫正在击中我在UI上传递的URL,并立即退出(即,它只是发送GET请求)。
解决方法
使用Locust可以实现,但简单的内置用户则无法实现。您是对的,蝗虫只会在您提供的端点上执行简单的GET
。我使用Locust进行视频流负载测试,但必须编写自己的用户流来模拟视频播放器,以实现所需的行为。您需要根据您的特定用例执行相同的操作。
我建议您编写一个Python脚本来完成您想要的工作。在基本情况下,您可以将整个内容复制并粘贴到Locust中,并将其标记为@task
,然后用Locust替换您的网络通话。
对于更高级的方案,您可以编写Python代码来执行所需的任何操作,并在所需的位置手动触发事件以将事物的状态报告回Locust。在文档中,这称为使用自定义客户端测试其他系统。您可以在这里https://docs.locust.io/en/stable/testing-other-systems.html
进行检查