如果我启动我的 phoenix 应用程序的一个实例,并通过请求点击它,我的插件将适当地停止。但是,在测试环境中执行相同操作时,halt 不会阻止下游插件被调用,这会导致我的测试失败。我认为问题可能来自我在测试期间调用路由器的方式。这是我正在使用的辅助函数,它是从 phoenix 框架本身的一个类似函数中大量借用的:
def call(router, verb, path, params \\ nil, headers \\ []) do
add_headers(conn(verb, path, params), headers)
|> Plug.Conn.fetch_params
|> Plug.Parsers.call(parsers: [Plug.Parsers.JSON],
pass: ["*/*"],
json_decoder: Poison)
|> router.call(router.init([]))
end
Run Code Online (Sandbox Code Playgroud)
关于为什么像这样调用我的路由器会导致停止工作的任何想法?
编辑:所以我升级到 Phoenix 0.13.1 以便使用他们的新端点测试模块而不是我推出的助手。我会报告这是否解决了问题。
我想执行一个(慢)python脚本,我希望我的Elixir进程阻塞,直到它收到脚本的所有输出.
是Elixir的System.cmd/3还是Erlang的os:cmd/1保证同步?如果没有,是否有其他方式进行同步操作系统调用?
我正在尝试使用 AWS Java SDK 访问我的 Elastic Transcoder 作业。但是,这些工作是在与我的开发机器不同的区域完成的。当我尝试建立 ElasticTranscoderClient 并设置它的区域时,我收到以下错误:
java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.ObjectMapper.enable([Lcom/fasterxml/jackson/core/JsonParser$Feature;)Lcom/fasterxml/jackson/databind/ObjectMapper;
at com.amazonaws.partitions.PartitionsLoader.<clinit>(PartitionsLoader.java:54)
at com.amazonaws.regions.RegionMetadataFactory.create(RegionMetadataFactory.java:30)
at com.amazonaws.regions.RegionUtils.initialize(RegionUtils.java:66)
at com.amazonaws.regions.RegionUtils.getRegionMetadata(RegionUtils.java:54)
at com.amazonaws.regions.RegionUtils.getRegion(RegionUtils.java:107)
at com.amazonaws.client.builder.AwsClientBuilder.withRegion(AwsClientBuilder.java:233)
at com.amazonaws.client.builder.AwsClientBuilder.withRegion(AwsClientBuilder.java:222)
Run Code Online (Sandbox Code Playgroud)
我要强调的是,这仅在我尝试将区域与客户端一起使用时才会发生(对于我尝试使用的任何 AWS 客户端都是如此)
在网上环顾四周,这似乎是由于 Jackson 版本不够高造成的,但我不知道如何解决这个问题,因为它是 AWS SDK 的依赖项,而不是我的项目的依赖项。
其他人遇到过这个问题吗?这真的是一个依赖问题还是只是一个红鲱鱼?
编辑:使用 SDK 版本 1.11.60
java sdk amazon-web-services maven amazon-elastic-transcoder
我有一个存储桶列表,每个存储桶包含许多记录.我正在使用流来对每个桶中的这些记录的值求和.但是,在我collect的总和不正确之后,我遇到了一个问题.到目前为止我的处理声明:
List<StatAccumulator> results = statData.stream().map(
list -> list.stream().parallel()
.collect(
() -> new StatAccumulator(metrics, groups),
StatAccumulator::containerize,
StatAccumulator::combine
)
).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
StatAccumulator只是一个容器类,它存储我为每条记录求和的每个值.
public class StatAccumulator {
public StatRecord result;
private final List<String> metrics;
private final List<String> groups;
private Long count;
public StatAccumulator(List<String> metrics, List<String> groups) {
this.metrics = metrics;
this.groups = groups;
}
public void containerize(StatRecord initial) {
//logger.info(initial.toString());
this.result = new StatRecord(
initial.v1,
initial.v2
);
this.count = 1l;
}
public void combine(StatAccumulator other) {
result.v1+= other.result.v1;
result.v2+= other.result.v2;
this.count += …Run Code Online (Sandbox Code Playgroud) 访问对象的属性时,我遇到了非常奇怪的行为.
运行此代码:
console.log(myObj);
console.log(myObj.items);
console.log(myObj);
Run Code Online (Sandbox Code Playgroud)
我在控制台中得到了这个输出:

怎么可能发生这种情况?