我们如何控制Locust中任务集执行中的客户端?

时间:2017-09-20 12:04:45

标签: python locust

  1. 有没有办法获取当前执行的客户信息 在任务集类中?我们可以在Jmeter中获得Thread号。 像这样我们可以在Locust工具中获得客户编号吗?
  2. 假设我正在用5个客户端执行20个请求。我可以说每一个 客户端正在执行4个请求(每个20/5 = 4个请求)?什么是内部 使用此处使用5执行这20个请求的机制 客户端?
  3. 此问题与问题:2 中给出的数据有关,执行是否以迭代方式进行。与第一次迭代类似,客户端1,2,3,4和5分别执行请求1,2,3,4和5。下一次迭代,客户端1,2,3,4和5分别执行请求6,7,8,9和10。 我们如何在Locust工具中实现这种类型的执行机制。这可能吗?

    请帮我澄清上述问题。

2 个答案:

答案 0 :(得分:1)

  1. 我不认为它有内置的支持。您可以在on_start方法
  2. 中自行设置ID
  3. 每个蝗虫都会在上一个任务完成后触发一个新任务(考虑到等待时间)。如果您的响应时间变化很小,则可以假设请求的分布均匀。
  4. 不,蝗虫一个接一个地挑选任务,但没有等待轮到他们。当Locust可用时,它将选择一个任务并执行它。我认为没有人支持您的要求。

答案 1 :(得分:1)

  

有没有办法在Task set class中获取当前执行的Client信息?

目前没有。协调器创建客户端时的data sent to the client does not include this。这种行为已被要求几次。

  

假设我正在用5个客户端执行20个请求。我可以说每个客户端正在执行4个请求(每个请求20/5 = 4个)吗?在这里使用5个客户端执行这20个请求的内部机制是什么?

这个问题有不正确的假设。

每个Locust都有minimum and maximum weight time,用于确定任务之间等待的时间。

每个蝗虫根据任务权重和此间隔随机选择任务。 “用5个客户端执行20个请求”的控件意味着Locust将启动5个客户端,一旦收到20个请求的结果,就会终止。

根据您的通话时间长短,它们可以均匀分布。或者,大多数可以由一个客户完成。

  

这个问题与问题中给出的数据有关:2,执行是否以迭代方式进行。与第一次迭代类似,客户端1,2,3,4和5分别执行请求1,2,3,4和5。下一次迭代,客户端1,2,3,4和5分别执行请求6,7,8,9和10。我们怎样才能在Locust工具中实现这种类型的执行机制。这可能吗?

您可以将任务集嵌套在一起。但是“迭代”的概念在Locust框架中并没有真正意义。 Locust旨在根据权重随机挑选和创建任务。

如果你的目标是显式迭代,你运行一组任务,然后转到下一个迭代,运行不同的任务,你会发现Locust并不真正支持这个用例。

可以 write your own client执行此操作并根据需要手动触发事件,但是如果您从根本上想要以某种方式使用Locust,我不确定这些开销是否值得这不是故意的。