locust 使用队列进行参数化操作

Queue是python标准库中的线程安全的队列(FIFO)实现,提供了一个适用于多线程编程的先进先出的数据结构,即队列,用来在生产者和消费者线程之间的信息传递

基本方法:

Queue.Queue(maxsize=0) FIFO,如果maxsize小于1就表示队列长度无限
Queue.LifoQueue(maxsize=0) LIFO,如果maxsize小于1就表示队列长度无限
Queue.qsize() 返回队列的大小
Queue.empty() 如果队列为空,返回True,反之False
Queue.full() 如果队列满了,返回True,反之False
Queue.get([block[,timeout]]) 读队列,timeout等待时间
Queue.put(item, [block[,timeout]]) 写队列,timeout等待时间
Queue.queue.clear() 清空队列

 

示例代码:

from locust import HttpUser, TaskSet, task
import os, queue, json


class MyTask(TaskSet):
@task
def ParamsTest(self):
self.data = {"skuId":123,"num":10}
try:
# 从队列头部获取一个值
#self.user 指向HttpUser
self.data["num"] = self.user.queue_data.get()
except queue.Empty:
print("队列中没有数据")
exit(1)
print(self.data)
response = self.client.post("/pinter/com/buy",data= self.data,name="PostParams")
print(response.text)
class WebsiteUser(HttpUser):
task = tasks = [MyTask]
host = "http://localhost:8088"
# 定义一个队列
queue_data = queue.Queue()
for i in range(1, 10):
queue_data.put_nowait("%d" % i)
max_wait = 4000
min_wait = 6000
posted @ 2022-04-05 23:24  微风轻哨  阅读(244)  评论(0编辑  收藏  举报