[SP-pm] duvida psgi / perl6

Tiago Peczenyj tiago.peczenyj at gmail.com
Thu Dec 8 04:26:08 PST 2011


estava olhando o codigo do WWW::Request para perl6

https://github.com/supernovus/perl6-www-app/blob/master/lib/WWW/Request.pm6

quando encontrei o seguinte trecho:

>   elsif %env<psgi.input> {
>      ## There is no standard for this, it can be a Str(ing), Array or IO object.
>      my $input = %env<psgi.input>;

entretanto a especificacao PSGI diz

> The input stream in psgi.input is an IO::Handle-like object which streams the raw HTTP POST or PUT data. If it is a file handle then it MUST be opened in binary mode. The input stream MUST respond to read and MAY implement seek.

> The built-in filehandle or IO::Handle based objects should work fine everywhere. Application developers SHOULD NOT inspect the type or class of the stream, but instead just call read to duck type.

http://search.cpan.org/~miyagawa/PSGI-1.03/PSGI.pod#The_Input_Stream

Confesso que não entendi o que fizeram no WWW::Request -- se
"psgi.input is an IO::Handle-like object" qual a razão para testar se
é um Array ou String? Isso pode depender de outro componente?

Uma outra duvida, agora de perl6

 $input.slurp;

no caso de input ser um IO isto é lazy ou eager? pergunto pois se eu
tiver um upload muito grande, por exemplo, a criação do objeto request
vai ser muito custosa e vai trancar o meu processamento nesse ponto.
Se eu não fosse utilizar o body por alguma razão (posso querer
analisar o header primeiro e descartar sob algum criterio) eu só vou
fazer depois do upload ser inteiramente lido e num possivel ataque de
exaustão de recursos posso ter dor de cabeça (a menos que eu
intercepte com um middleware plack - mas isso me limita um pouco nas
possibilidades).

Estava pensando em alugar um servidor na linode e brincar de perl6 pra
web usando alguma coisa leve.

Att

Tiago

-- 
Tiago B. Peczenyj
Linux User #405772

http://pacman.blog.br


More information about the SaoPaulo-pm mailing list