您认为在AWS API Gateway中使用和不使用代理功能的Lambda集成的优点和缺点是什么(更具体地说,在使用无服务器框架时)?这是我现在的想法:
Lambda与代理集成
没有代理的Lambda集成
你的想法是什么?您通常使用Lambda Proxy还是普通的Lambda集成?你喜欢什么,为什么?
编辑:到目前为止,我倾向于总是选择不使用代理功能,因为提到的原因(解耦和说明依赖关系 - 标题,状态代码等 - 预先).
我正在编写一个单元测试,其中生成一个(相当冗长的)二进制文件,我想断言生成的二进制文件等于我期望生成的二进制文件.我通过" rebar eunit " 运行eunit .
事情是,当这个断言失败时,输出被" ...... "消除,我想看到完整的输出,所以我可以发现差异在哪里.
我现在使用" ?debugFmt() "作为临时解决方案,但我想知道是否有替代它(某个地方的配置选项或参数可以应用于" ?_assertEqual() "所以输出仅在断言失败时显示).
提前致谢!
编辑:由于legoscia的答案,我使用测试生成器包含一个测试样本,有多个断言:
can_do_something(SetupData) ->
% ... some code ...
[?_assertEqual(Expected1, Actual1), ?_assertEqual(Expected2, Actual2)].
Run Code Online (Sandbox Code Playgroud) 我正在开发一个包含1名主管和几名工人的应用程序.这些工作人员中的每一个都只是打开一个tcp套接字,执行监听,然后接受连接,为每个客户端到达时生成一个进程(我不介意监督这些).
我想在应用程序配置中配置侦听地址,因此我可以根据需要使用尽可能多的地址进行侦听(至少需要1个地址,但可以指定任何数字).每个地址都是ip(或主机名)和端口地址.到目前为止,没什么新意
我的问题是关于如何申报,启动和监督未知数量的工人.我的解决方案是在管理程序代码中动态生成(在运行时)init/1函数的结果,如下所示:
-define(
CHILD(Name, Args),
{Name, {
?MODULE, start_listen, Args
}, permanent, 5000, worker, [?MODULE]
}
).
init([]) ->
{ok, Addresses} = application:get_env(listen),
Children = lists:map(
fun(Address) ->
{X1,X2,X3} = os:timestamp(),
ChildName = string:join([
"Listener-",
integer_to_list(X1),
integer_to_list(X2),
integer_to_list(X3)
], ""),
?CHILD(ChildName, [Address])
end,
Addresses
),
{ok, { {one_for_one, 5, 10}, Children }}.
Run Code Online (Sandbox Code Playgroud)
这允许我为每个worker动态生成一个名称,并生成worker定义.所以:
这个解决方案可以接受 在我看来,它并不那么优雅.对于这种用例,是否有任何标准解决方案(或最佳实践等)?
我知道"simple_one_for_one"策略,它允许动态地将工作人员添加到主管.但它是否也可以用来动态生成工人的名字?是否更好(以任何方式)使用"simple_one_for_one"而不是我自己使用"one_for_one"的解决方案?(再次,对于这种特殊情况).
在此先感谢,并为长篇帖子感到抱歉!:)