我有一些用Erlang编写的Web服务。由于一些请求,此服务调用Erlang中的另一个Web服务。第二个服务非常慢,有些请求执行时间达到一分钟。此服务的请求数量受到严格限制,我对此服务的所有请求都使用超时。我使用过不同的http客户端:gun
,httpc
,hackney
等。启动系统按照预期运行几分钟后,会发送有限的请求数,但根本不会发送任何请求。所有http客户端都给出相同的结果这里描述的类似问题:http://comments.gmane.org/gmane.comp.lang.erlang.general/73146请给我一个建议,可能导致问题的原因是什么?我检查了ulimit和其他环境选项,一切正常。
答案 0 :(得分:0)
你说你对所有的http客户端都有同样的行为,所以我认为你的代码是公共变量。
调试这个的好开始就是模拟HTTP调用。而不是
{ok, Result} = httpc:request("http://my.oracle/dostuff")
使用
do_request(_Url) ->
{ok, {200, <<"fake results">>}}.
....
% inside some other method
{ok, Result} = do_request("http://my.oracle/dostuff")
如果这样做,请尝试修改do_request
以长时间休眠(模拟服务器响应缓慢)。