j'ai une application Erlang qui fait un grand nombre d'appels http vers des sites externes à l'aide INET, en utilisant le code ci-dessousManipulation INET Erlang http erreurs client
case http:request(get, {Url, []}, [{autoredirect, false}], []) of
{ok, {{_, Code, _}, _, Body}}->
case Code of
200 ->
HandlerFn(Body);
_ ->
{error, io:format("~s returned HTTP ~p", [Broker, Code])}
end;
Response -> %% block to handle unexpected responses from inets
{error, io:format("~s returned ~p", [Broker, Response])}
end.
Il y a un bloc explicite pour gérer quoi que ce soit INET étranges pourrait retourner [réponse]. Malgré cela, je reçois toujours ce qui ressemble à des rapports d'erreurs inets déposés sur la console [échantillon ci-dessous]. Qu'est-ce que je fais mal ici? Ai-je besoin de configurer une sorte de gestionnaire d'erreur inets ailleurs?
Merci.
-
=ERROR REPORT==== 24-Apr-2010::06:49:47 ===
** Generic server <0.6618.0> terminating
** Last message in was {connect_and_send,
{request,#Ref<0.0.0.139358>,<0.6613.0>,0,http,
{"**********",80},
"*****************************",
[],get,
{http_request_h,undefined,"keep-alive",
undefined,undefined,undefined,undefined,
undefined,undefined,undefined,undefined,
undefined,undefined,undefined,undefined,
undefined,undefined,"news.bbc.co.uk",
undefined,undefined,undefined,undefined,
undefined,undefined,undefined,undefined,
undefined,[],undefined,undefined,undefined,
undefined,"0",undefined,undefined,
undefined,undefined,undefined,undefined,[]},
{[],[]},
{http_options,"HTTP/1.1",infinity,false,[],
undefined,false,infinity},
"************************************",
[],none,[],1272088179114,undefined,undefined}}
** When Server state == {state,
{request,#Ref<0.0.0.139358>,<0.6613.0>,0,http,
{"******************",80},
"*****************************",
[],get,
{http_request_h,undefined,"keep-alive",
undefined,undefined,undefined,undefined,
undefined,undefined,undefined,undefined,
undefined,undefined,undefined,undefined,
undefined,undefined,"news.bbc.co.uk",
undefined,undefined,undefined,undefined,
undefined,undefined,undefined,undefined,
undefined,[],undefined,undefined,
undefined,undefined,"0",undefined,
undefined,undefined,undefined,undefined,
undefined,[]},
{[],[]},
{http_options,"HTTP/1.1",infinity,false,[],
undefined,false,infinity},
"****************************************",
[],none,[],1272088179114,undefined,undefined},
undefined,undefined,undefined,undefined,undefined,
{[],[]},
{[],[]},
undefined,[],nolimit,nolimit,
{options,
{undefined,[]},
0,2,5,120000,2,disabled,false,inet,default,
default,[]},
{timers,[],undefined},
httpc_manager,undefined}
** Reason for termination ==
** {error,{connect_failed,{#Ref<0.0.0.139358>,{error,nxdomain}}}}
=ERROR REPORT==== 24-Apr-2010::06:49:47 ===
HTTPC-MANAGER<httpc_manager> handler (<0.6618.0>, started) failed to connect and/or send request #Ref<0.0.0.139358>
Result: {error,{connect_failed,{#Ref<0.0.0.139358>,{error,nxdomain}}}}
Eh bien, c'est une erreur intermittente; c'est donc un problème avec le serveur distant. La question est, comment puis-je gérer l'erreur à mon extrémité? – Justin
Je pense que sa question est plus sur la façon de gérer le fait que le processus inets s'est écrasé et non pourquoi il s'est écrasé. –