Meh, it doesn't, I was testing it wrong :-/

On 7 February 2017 at 15:02, rasta <[email protected]> wrote:

> I found this code from Mojolicious::Plugin::Proxy works like a charm:
>
> $self->client->async->get($url, sub {
>     my ($self, $tx) = @_;
>
>     if (my $res=$tx->success) {
>       $self->tx->res($res);
>       $self->rendered;
>     }else {
>       my ($msg,$error) = $tx->error;
>       $self->tx->res->headers->add('X-Remote-Status',$error.': '.$msg);
>       $self->render(
>         status => 500,
>         text => 'Failed to fetch data from backend'
>       );
>     }
>   })->start;
>
> On Friday, February 3, 2017 at 1:05:52 PM UTC+1, rasta wrote:
>>
>> Hi!
>>
>> I'm using mojolicious 6.11. I have a proxy environment like this:
>>
>> apache -> hypnotoad -> tomcat
>>
>> and the proxy code looks like this:
>>
>> sub proxy {
>>
>> ...
>>
>>   if (Mojo::IOLoop->is_running) {
>>     $self->render_later;
>>     $self->ua->get(
>>       $url,
>>       sub {
>>         my ($c, $tx) = @_;
>>         _proxy_tx($self, $tx);
>>       }
>>     );
>>   }else {
>>     my $tx = $self->ua->get($url);
>>     _proxy_tx($self, $tx);
>>   }
>> }
>>
>> sub _proxy_tx {
>>   my ($c, $tx) = @_;
>>   if (my $res = $tx->success) {
>>     $c->tx->res($res);
>>     $c->rendered;
>>   }
>>   else {
>>     my $error = $tx->error;
>>     $c->tx->res->headers->add('X-Remote-Status', $error->{code} . ': ' .
>> $error->{message});
>>     $c->render(status => 500, text => 'Failed to fetch data:
>> '.$c->app->dumper($tx->error));
>>   }
>> }
>>
>> Am I doing this right at all? I thought it's going to stream the stuff
>> through but that's not happening, mojo writes the data down to it's
>> mojo.tmp file and it seems that nothing comes out unless it fetched the
>> whole file from tomcat. The problem is it works for smaller files but when
>> I'm proxying 2.7GB file after the mojo.tmp file reaches ~ 2.5GB I'll get
>>
>> The proxy server received an invalid response from an upstream server.
>> The proxy server could not handle the request *GET 
>> /api/object/o:292171/diss/Content/download
>> <https://services.phaidra.univie.ac.at/api/object/o:292171/diss/Content/download>*
>> .
>>
>> Reason: *Error reading from remote server*
>>
>> from Apache. In tomcat log it seems the file was sent OK (the bytesize
>> matches and the response is 200). Mojo will log
>> "Nothing has been rendered, expecting delayed response"
>> before it starts proxying but nothing afterwards.
>>
>> Any idea what could be wrong here or how to do this better? Otherwise I'd
>> have to send a redirect but I'd like to avoid that.
>>
>> Thanks!
>> Rasta
>>
>> --
> You received this message because you are subscribed to a topic in the
> Google Groups "Mojolicious" group.
> To unsubscribe from this topic, visit https://groups.google.com/d/
> topic/mojolicious/QaVw_wk1JnY/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/mojolicious.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Mojolicious" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/mojolicious.
For more options, visit https://groups.google.com/d/optout.

Reply via email to