Python 蝗虫中每个线程的不同数据集/蝗虫中的线程控制

Python 蝗虫中每个线程的不同数据集/蝗虫中的线程控制,python,multithreading,performance,concurrency,locust,Python,Multithreading,Performance,Concurrency,Locust,我想对一个分布式应用程序进行负载测试,我决定使用蝗虫。我面临的问题是,这个应用程序有许多不同的输入,我需要避免这些输入的重复 例如: 让我们考虑有4个输入(A,B,C,D)。现在,我从一个文件中读取这些输入,并将其发布到应用程序的API上。问题是,如果我有一个任务要将输入a发布到API,那么我生成的所有线程都会将“a”发布到API,使其重复。我想要一种机制,在这种机制中,我可以向生成的不同线程(用户)提供不同的输入 有没有一种方法可以让我控制线程(用户)或直接向他们提供不同的输入?您可以使用运行

我想对一个分布式应用程序进行负载测试,我决定使用蝗虫。我面临的问题是,这个应用程序有许多不同的输入,我需要避免这些输入的重复

例如: 让我们考虑有4个输入(A,B,C,D)。现在,我从一个文件中读取这些输入,并将其发布到应用程序的API上。问题是,如果我有一个任务要将输入a发布到API,那么我生成的所有线程都会将“a”发布到API,使其重复。我想要一种机制,在这种机制中,我可以向生成的不同线程(用户)提供不同的输入


有没有一种方法可以让我控制线程(用户)或直接向他们提供不同的输入?

您可以使用运行用户的greenlet标识符

import greenlet
...
(inside your task)
id = greenlet.getcurrent().minimal_ident

它们在蝗虫工作者中不是唯一的,但可能您没有运行分布式的。

您可以使用运行用户的greenlet标识符

import greenlet
...
(inside your task)
id = greenlet.getcurrent().minimal_ident

它们在蝗虫工作者中并不是独一无二的,但也许你不是分布式的。

我也有同样的问题,我在media.com(作者)上找到了一个探讨这个问题的网站。本文中的代码与最新版本(截至编写时,为1.4.4)的蝗虫不兼容

简言之:

  • 在greenlet的主/本地节点上启动ZMQ“服务器”,队列测试数据(A、B、C、D)
  • 从辅助服务器连接到主服务器上的服务器
  • 服务器使用队列上的一个输入进行响应
  • Worker使用testdata运行任务

  • 这也适用于本地模式,只要在阻塞模式下不请求测试数据。

    我也遇到了同样的问题,并在medium.com(作者)上找到了一个探索该主题的。本文中的代码与最新版本(截至编写时,为1.4.4)的蝗虫不兼容

    简言之:

  • 在greenlet的主/本地节点上启动ZMQ“服务器”,队列测试数据(A、B、C、D)
  • 从辅助服务器连接到主服务器上的服务器
  • 服务器使用队列上的一个输入进行响应
  • Worker使用testdata运行任务
  • 这也可以在本地模式下工作,只要在阻塞模式下不请求testdata