[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