在分布式模式下,蝗虫可以知道其他工作人员是否已经为特定用户运行任务

问题描述

社区。​​ p>

我需要由不同工作人员创建的用户不能重复。即如果 worker_1 创建用户 fake1 并为此用户运行任务,则 worker_2 必须不能创建用户 fake1

当前仅在独立模式下可用。

credentials = [ (f"fake{i}",'password') for i in range(100) ]

class MobileUser(HttpUser):
    tasks = [RealTiMetask]
    wait_time = constant_pacing(1)

    def __init__(self,parent):
        super().__init__(parent)

        if len(credentials) > 0:
            shuffle(credentials)
            self.username,self.password = credentials.pop()

解决方法

不是。奴隶们彼此之间是幸福的。

我认为您最好的选择是在工作人员启动时设置一个环境变量:

WORKER_ID=1 locust --worker ...

(然后将os.env['WORKER_ID']插入用户名以使其唯一)

每个工作程序有一个唯一的ID(可通过使用self.environment.runner.client_id的任务访问),但是它们没有排序(它们包含主机名+一个UUID),所以我不知道是否真的对您有帮助。

另一种选择可能是使用主机名+进程ID作为标识符。