gpt4 book ai didi

python - 机器人框架: send binary data in POST request body with

转载 作者:太空宇宙 更新时间:2023-11-03 21:13:07 25 4
gpt4 key购买 nike

我在使用 Robot Framework 和 robotframework-requests 运行测试时遇到问题。我需要发送一个 POST 请求和正文中的二进制数据。我已经看过 this question 了,但还没有真正回答。我的测试用例如下所示:

Upload ${filename} file
Create Session mysession http://${ADDRESS}
${data} = Get Binary File ${filename}
&{headers} = Create Dictionary Content-Type=application/octet-stream Accept=application/octet-stream
${resp} = Post Request mysession ${CGIPath} data=${data} headers=&{headers}
[Return] ${resp.status_code} ${resp.text}

问题是我的二进制数据大约有 250MB。当使用 Get Binary File 读取数据时,我发现内存消耗高达 2.x GB。几秒钟后,当触发 Post Request 时,我的测试被 OOM 终止。我已经查看了 files 参数,但似乎它使用了分段编码上传,这不是我需要的。

我的另一个想法是将打开的文件处理程序直接传递到底层请求库,但我想这需要对 robotsframework-request 进行修改。另一个想法是仅针对此测试回退到curl。

我在测试中遗漏了什么吗?解决这个问题的更好方法是什么?

最佳答案

我继续修改robotframework-request的想法并添加了这个方法

def post_request_binary(                                                                                          
self,
alias,
uri,
path=None,
params=None,
headers=None,
allow_redirects=None,
timeout=None):

session = self._cache.switch(alias)
redir = True if allow_redirects is None else allow_redirects
self._capture_output()

method_name = "post"
method = getattr(session, method_name)

with open(path, 'rb') as f:
resp = method(self._get_url(session, uri),
data=f,
params=self._utf8_urlencode(params),
headers=headers,
allow_redirects=allow_redirects,
timeout=self._get_timeout(timeout),
cookies=self.cookies,
verify=self.verify)

self._print_debug()

# Store the last session object
session.last_resp = resp

self.builtin.log(method_name + ' response: ' + resp.text, 'DEBUG')

return resp

我想我可以稍微改进一下并创建一个拉取请求。

关于python - 机器人框架: send binary data in POST request body with,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54907281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com