我要重新排列字典键的顺序时遇到了一个问题。我有一个具有的数组,env = [key1, key2, key3]然后在循环中,这些键从数组中获取并馈送到字典中。dict_result。dic_result以以下格式显示字典中这些env键的顺序(即使我未使用任何排序函数,也基于key1,key2、3名称的字母顺序):
{'name': {'key2': [val1, val2, val3], 'key1': [], 'key3': [val1, val2]},
'name1': {'key2': [val1, val2, val3], 'key1': [], 'key3': [val1, val2]},
...
}
for k in dict_result['name'].keys():
//performing checks
Run Code Online (Sandbox Code Playgroud)
我想将dict_result [name]的嵌套键顺序更改为:
{'name': {'key3': [val1, val2]}, 'key2': [],'key1': [val1, val2, val3]}
Run Code Online (Sandbox Code Playgroud)
我确实使用内置函数reversed()进行了尝试,但似乎创建了一个迭代器,该迭代器更改了我现有代码和for循环中的某些逻辑,该循环遍历这些字典env键并根据其值执行检查/验证。我现在了解到,常规字典不会跟踪插入顺序,并且对其进行迭代会以任意顺序给出值。
如果有一种更简单的方法可以让字典完全按照从数组中馈入/摄取它们的顺序使用env键,请帮助,即key1,key2,key3,或者可以将其反转为key3,key2,key1。但是,不要以现有的方式根据实际键名显示字母顺序。
我是使用Spring Boot指标的新手,从千分尺开始。我找不到在我的spring-boot应用程序中执行计时器指标的好例子(事实是它的新特性)。我正在使用spring-boot-starter-web:2.0.2.RELEASE依赖项。但是运行spring-boot服务器并启动jconsole时,我没有看到它显示Metrics(MBeans),因此我还明确地将以下依赖项包括在内:
spring-boot-starter-actuator:2.0.2.RELEASE
Run Code Online (Sandbox Code Playgroud)
还有千分尺的依赖性:'io.micrometer:micrometer-registry-jmx:latest'
添加执行器后,它确实显示Metrics文件夹,但列表中没有看到我的timer(app.timer)属性。难道我做错了什么?任何建议表示赞赏!
下面的代码段:
MeterRegistry registry = new CompositeMeterRegistry();
long start = System.currentTimeMillis();
Timer timer = registry.timer("app.timer", "type", "ping");
timer.record(System.currentTimeMillis() - start, TimeUnit.MILLISECONDS);
Run Code Online (Sandbox Code Playgroud)
这有效:
Metrics.timer("app.timer").record(()-> {
didSomeLogic;
long t = timeOccurred - timeScheduled;
LOG.info("recorded timer = {}", t);
});
Run Code Online (Sandbox Code Playgroud) 我是使用 Scala 和 gatling 的新手。我正在定义一个场景,该场景正在执行 http post 调用以创建资源。在请求正文的键/字段之一中,我想为名称放置一个唯一标识符,因此使用 UUID.randomUUID() 但是当使用以下代码时请求失败。
val uuid = UUID.randomUUID().toString
println(uuid)
val scn = scenario("Testing !")
.exec(http("create resource")
.post("/data")
.body(StringBody(
"""{
"add_name": "${uuid}",
}""")).asJSON
.check(status is(200)))
Run Code Online (Sandbox Code Playgroud)
即使打印 uuid 确实在控制台中打印了 id 但在发布请求正文上抛出错误,因为我认为“${uuid}”可能是错误的,但我不确定。
非常感谢任何建议/帮助!
我正在尝试找到一种方法从 http 调用响应中获取响应标头,例如 X-RateLimit-Limit、X-RateLimit-Remaining 等。无法从在线资源或文档中找到,有人可以帮忙吗?当我启用日志记录时,我在控制台中看到这些标头,但不知道如何从响应中检索这些标头。
http("Get API")
.get("https://hello.com/list")
.header("Authorization", "${auth}")
.check(status.is(200))
.check(bodyString.saveAs("Auth_Response"))
Run Code Online (Sandbox Code Playgroud)
还有一种方法可以在一个时间范围内多次运行此 http 调用。我应该使用哪些内置方法来循环以及在一定的时间限制内运行此特定的 http 调用?我在下面尝试过但没有成功。理想情况下,我希望能够验证此 API 速率限制,因此尝试了这种方式。虽然我开始明白我不能同时使用重复()持续时间(),但它们有两个我想实现的不同目的。即使只是在 period() 中调用 http 请求构建器类型调用也会抛出错误 - “它不符合预期类型 ChainBuilder ”
val scn1 =
during (60.seconds) {
scenario("Setup scenario")
.repeat(201){
exec(
http("Get API")
.get("https://hello.com/list")
.header("Authorization", "${auth}")
)}
setUp(
scn1.inject(
atOnceUsers(1)
)
)
}
Run Code Online (Sandbox Code Playgroud)
无论我将 setup() 放在 while() 内部还是外部,都会导致错误。我正在尝试评估是否需要在()期间。仅使用repeat(201)时,它会导致API运行201次并减少api的计数,X-RateLimit-Remaining但不足以将其达到0,从而导致错误代码响应。请提供任何建议吗?
gatling ×2
dictionary ×1
http ×1
micrometer ×1
python ×1
python-2.7 ×1
response ×1
scala ×1
spring-boot ×1