http://www.perlmonks.org?node_id=973363

miguelele has asked for the wisdom of the Perl Monks concerning the following question:

Hi!, in my Catalyst app, I have a very important connection to a remote server using SOAP with WSDL.

Everything works fine, but If the remote server goes down, ALL my app waits until the timeout expires. EVERYTHING, ALL the controllers and processes!!

If I set a 15 secs timeout, everything wait for 15 secs!! Any page from any user or connection can't be displayed during the timeout wait.

We have seen it just before going into production, when we have set the timeout to a higher value to prevent overloads in the remote server

I am very, very, very worried

Can you point me to somewhere to help with this?

sub check_result { my ($self, $code, $IP, $PORT) = @_; my $soap = SOAP::Lite->new( proxy => "http://$IP:$PORT/REMOTE_SOAP +"); $soap->autotype(0); $soap->default_ns('http://REMOTENAMESPACE/namespace/default'); $soap->transport->timeout(15); $soap-> on_fault(sub { my($soap, $res) = @_; eval { die ref $res ? $res->faultstring : $soap->transport->st +atus }; return ref $res ? $res : new SOAP::SOM; }); my $som = $soap->call("remote_function", SOAP::Data->name( 'Entry1' )->value( $code ), ); return $som->paramsout; }