【问题标题】:LocustIO: How to do batch requestLocustIO:如何进行批量请求
【发布时间】:2020-06-11 11:06:55
【问题描述】:

我开始使用 LocustIO 对 3rd 方 API 进行负载测试,该 API 提供了一种执行批处理请求的方法 (http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_BatchRequests)。

如何使用 LocustIO 做到这一点?

我尝试了以下方法:

def batch(self):
  response = self.client.request(method="POST", url="/$batch", auth=("ABC", "DEF"), headers={"ContentType": "multipart/mixed; boundary=batch_36522ad7-fc75-4b56-8c71-56071383e77b"}, data="Content-Type: application/http\nContent-Transfer-Encoding: binary\n\nGET putyoururlhere HTTP/1.1\nAccept: application/json\n\n\n")

Auth 是我需要对 API 进行身份验证的东西,但这不是问题的重点,“putyoururlhere”应该替换为实际的 url。无论哪种方式,它在执行测试时都会出错,所以我一定做错了什么。

有经验的人怎么做?

亲切的问候!

【问题讨论】:

  • 嗨!你得到什么错误?你能用 Locust 以外的东西来做请求吗?
  • 请求本身使用 .NET 但使用 LocustIO 客户端库,请求本身会导致“错误请求”,我猜它与请求正文的构造方式有关.将正文发送到批处理请求意味着将 HTTP 协议、新行添加到 1 个字符串等中,但我不确定如何使用 self.client.request() 在一行中执行此操作。我想也许 \n 作为换行符,但不确定。我主要是 .NET/javascript 开发人员和 Python 新手,所以我可能会遗漏一些简单的东西......
  • 哦,我现在明白了..

标签: python-requests locust


【解决方案1】:

data 参数应该是您的 POST 正文(仅限),您不能像以前那样在其中添加额外的标题。您可能只想将它们作为附加条目添加到您作为 headers 传递的字典中

请参阅 python requests 库的文档以获取更多详细信息。 https://requests.readthedocs.io/en/master/

【讨论】:

    猜你喜欢
    • 2011-10-22
    • 1970-01-01
    • 2011-09-03
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    相关资源
    最近更新 更多