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

问题描述

社区。

我需要不同工作人员创建的用户不会被复制。即如果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()

标签: distributedlocust

解决方案


并不真地。奴隶们幸福地不知道彼此。

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

WORKER_ID=1 locust --worker ...

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

每个工作人员都有一个唯一的 id(可以从使用 的任务中访问self.environment.runner.client_id),但它们不是有序的(它们包含主机名 + UUID),所以我不知道这是否真的对你有帮助。

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


推荐阅读