2014年4月13日星期日

Re: [PerlChina] Re: Mojolicious::Lite 开发的web app如何部署到生产环境

从官方文档了解了hypnotoad,

Manager (old)  |- Worker [1]  |- Worker [2]  |- Worker [3]  |- Worker [4]  +- Manager (new)     |- Worker [1]     |- Worker [2]     |- Worker [3]     +- Worker [4]

workers

workers => 10

Number of worker processes, defaults to 4. A good rule of thumb is two worker processes per CPU core for applications that perform mostly non-blocking operations, blocking operations often require more and benefit from decreasing the number of concurrent "clients" (often as low as 1).


在 2014年4月13日星期日UTC+8下午9时05分11秒,方及道写道:
为什么呢?
还有其他的方式吗?

在 2014年4月13日星期日UTC+8下午7时04分37秒,Fayland Lam写道:
hypnotoad 就不会block了。

On Sun, Apr 13, 2014 at 5:09 PM, 方及道 <rungum...@gmail.com> wrote:
> 代码:
>
> #!/usr/bin/env perl
>
> use v5.010;
> use strict;
> use warnings;
>
> use Mojolicious::Lite;
>
> use File::Spec::Functions;
> use File::Temp qw/ tempfile /;
> use File::Slurp;
> use Scalar::Util 'weaken';
> use Data::Dumper;
>
> #under 'query';
>
> get '/' => 'index';
>
> post '/vddb' => sub {
>     my $self = shift;
>
>     say "------------------->";
>
>     # Check file size
>     return $self->render( text => 'File is too big.', status => 200 )
>         if $self->req->is_limit_exceeded;
>
>     # Process uploaded file
>     return $self->redirect_to('index')
>         unless my $vdna = $self->param('vdna');
>     my $size = $vdna->size;
>     my $name = $vdna->filename;
>
>     #my $dna_file = catfile( "/tmp/$name" );
>     #$vdna->move_to( $dna_file );
>
>     #my $dur  = dna_duration( $dna_file );
>     #my $rest = query_meta($name, $dur);
>     `du -sh /Users`;
>
>     $self->res->headers->content_type('text/xml');
>     $self->render( text => "<dna><size>$size</size><name>$name</name></dna>"
> );
> };
>
> app->start;
>
> __DATA__
>
> @@ index.html.ep
> <!DOCTYPE html>
> <html>
>   <head><title>Streaming multipart upload</title></head>
>   <body>
>     %= form_for "vddb" => (enctype => 'multipart/form-data') => begin
>     %= file_field 'vdna'
>     %= submit_button 'Query'
>     % end
>  </body>
> </html>
>
> 在 2014年4月13日星期日UTC+8下午5时07分54秒,方及道写道:
>>
>> hi:
>>
>> 我用Mojolicious::Lite写了个脚本,基本就是模仿官方文档的,用dev模式,morbe app.pl 是可以正常运行的。
>>
>> 但是发现其是blocking request的,只能一个一个处理request。
>>
>> 如何部署才能成为一个生产用的Server呢?
>>
>> thx
>> noodles
>
> --
> 您收到此邮件是因为您订阅了Google网上论坛中的"PerlChina Mongers 讨论组"论坛。
> 要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到perlchina+unsubscribe@googlegroups.com
> 要发帖到此论坛,请发送电子邮件至perl...@googlegroups.com
> 通过http://groups.google.com/group/perlchina访问此论坛。
> 要查看更多选项,请访问https://groups.google.com/d/optout



--
Fayland Lam // http://www.fayland.org/

--
您收到此邮件是因为您订阅了Google网上论坛中的"PerlChina Mongers 讨论组"论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到perlchina+unsubscribe@googlegroups.com
要发帖到此论坛,请发送电子邮件至perlchina@googlegroups.com
通过http://groups.google.com/group/perlchina访问此论坛。
要查看更多选项,请访问https://groups.google.com/d/optout

Re: [PerlChina] Re: Mojolicious::Lite 开发的web app如何部署到生产环境

为什么呢?
还有其他的方式吗?

在 2014年4月13日星期日UTC+8下午7时04分37秒,Fayland Lam写道:
hypnotoad 就不会block了。

On Sun, Apr 13, 2014 at 5:09 PM, 方及道 <rungum...@gmail.com> wrote:
> 代码:
>
> #!/usr/bin/env perl
>
> use v5.010;
> use strict;
> use warnings;
>
> use Mojolicious::Lite;
>
> use File::Spec::Functions;
> use File::Temp qw/ tempfile /;
> use File::Slurp;
> use Scalar::Util 'weaken';
> use Data::Dumper;
>
> #under 'query';
>
> get '/' => 'index';
>
> post '/vddb' => sub {
>     my $self = shift;
>
>     say "------------------->";
>
>     # Check file size
>     return $self->render( text => 'File is too big.', status => 200 )
>         if $self->req->is_limit_exceeded;
>
>     # Process uploaded file
>     return $self->redirect_to('index')
>         unless my $vdna = $self->param('vdna');
>     my $size = $vdna->size;
>     my $name = $vdna->filename;
>
>     #my $dna_file = catfile( "/tmp/$name" );
>     #$vdna->move_to( $dna_file );
>
>     #my $dur  = dna_duration( $dna_file );
>     #my $rest = query_meta($name, $dur);
>     `du -sh /Users`;
>
>     $self->res->headers->content_type('text/xml');
>     $self->render( text => "<dna><size>$size</size><name>$name</name></dna>"
> );
> };
>
> app->start;
>
> __DATA__
>
> @@ index.html.ep
> <!DOCTYPE html>
> <html>
>   <head><title>Streaming multipart upload</title></head>
>   <body>
>     %= form_for "vddb" => (enctype => 'multipart/form-data') => begin
>     %= file_field 'vdna'
>     %= submit_button 'Query'
>     % end
>  </body>
> </html>
>
> 在 2014年4月13日星期日UTC+8下午5时07分54秒,方及道写道:
>>
>> hi:
>>
>> 我用Mojolicious::Lite写了个脚本,基本就是模仿官方文档的,用dev模式,morbe app.pl 是可以正常运行的。
>>
>> 但是发现其是blocking request的,只能一个一个处理request。
>>
>> 如何部署才能成为一个生产用的Server呢?
>>
>> thx
>> noodles
>
> --
> 您收到此邮件是因为您订阅了Google网上论坛中的"PerlChina Mongers 讨论组"论坛。
> 要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到perlchina+unsubscribe@googlegroups.com
> 要发帖到此论坛,请发送电子邮件至perl...@googlegroups.com
> 通过http://groups.google.com/group/perlchina访问此论坛。
> 要查看更多选项,请访问https://groups.google.com/d/optout



--
Fayland Lam // http://www.fayland.org/

--
您收到此邮件是因为您订阅了Google网上论坛中的"PerlChina Mongers 讨论组"论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到perlchina+unsubscribe@googlegroups.com
要发帖到此论坛,请发送电子邮件至perlchina@googlegroups.com
通过http://groups.google.com/group/perlchina访问此论坛。
要查看更多选项,请访问https://groups.google.com/d/optout

Re: [PerlChina] Re: Mojolicious::Lite 开发的web app如何部署到生产环境

hypnotoad 就不会block了。

On Sun, Apr 13, 2014 at 5:09 PM, 方及道 <rungumpth000@gmail.com> wrote:
> 代码:
>
> #!/usr/bin/env perl
>
> use v5.010;
> use strict;
> use warnings;
>
> use Mojolicious::Lite;
>
> use File::Spec::Functions;
> use File::Temp qw/ tempfile /;
> use File::Slurp;
> use Scalar::Util 'weaken';
> use Data::Dumper;
>
> #under 'query';
>
> get '/' => 'index';
>
> post '/vddb' => sub {
> my $self = shift;
>
> say "------------------->";
>
> # Check file size
> return $self->render( text => 'File is too big.', status => 200 )
> if $self->req->is_limit_exceeded;
>
> # Process uploaded file
> return $self->redirect_to('index')
> unless my $vdna = $self->param('vdna');
> my $size = $vdna->size;
> my $name = $vdna->filename;
>
> #my $dna_file = catfile( "/tmp/$name" );
> #$vdna->move_to( $dna_file );
>
> #my $dur = dna_duration( $dna_file );
> #my $rest = query_meta($name, $dur);
> `du -sh /Users`;
>
> $self->res->headers->content_type('text/xml');
> $self->render( text => "<dna><size>$size</size><name>$name</name></dna>"
> );
> };
>
> app->start;
>
> __DATA__
>
> @@ index.html.ep
> <!DOCTYPE html>
> <html>
> <head><title>Streaming multipart upload</title></head>
> <body>
> %= form_for "vddb" => (enctype => 'multipart/form-data') => begin
> %= file_field 'vdna'
> %= submit_button 'Query'
> % end
> </body>
> </html>
>
> 在 2014年4月13日星期日UTC+8下午5时07分54秒,方及道写道:
>>
>> hi:
>>
>> 我用Mojolicious::Lite写了个脚本,基本就是模仿官方文档的,用dev模式,morbe app.pl 是可以正常运行的。
>>
>> 但是发现其是blocking request的,只能一个一个处理request。
>>
>> 如何部署才能成为一个生产用的Server呢?
>>
>> thx
>> noodles
>
> --
> 您收到此邮件是因为您订阅了Google网上论坛中的"PerlChina Mongers 讨论组"论坛。
> 要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到perlchina+unsubscribe@googlegroups.com
> 要发帖到此论坛,请发送电子邮件至perlchina@googlegroups.com
> 通过http://groups.google.com/group/perlchina访问此论坛。
> 要查看更多选项,请访问https://groups.google.com/d/optout



--
Fayland Lam // http://www.fayland.org/

--
您收到此邮件是因为您订阅了 Google 网上论坛的"PerlChina Mongers 讨论组"论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到perlchina+unsubscribe@googlegroups.com
要向此网上论坛发帖,请发送电子邮件至 perlchina@googlegroups.com
通过以下网址访问此论坛:http://groups.google.com/group/perlchina
要查看更多选项,请访问 https://groups.google.com/d/optout

[PerlChina] Re: Mojolicious::Lite 开发的web app如何部署到生产环境

代码:

#!/usr/bin/env perl

use v5.010;
use strict;
use warnings;

use Mojolicious::Lite;

use File::Spec::Functions;
use File::Temp qw/ tempfile /;
use File::Slurp;
use Scalar::Util 'weaken';
use Data::Dumper;

#under 'query';

get '/' => 'index';

post '/vddb' => sub {
    my $self = shift;

    say "------------------->";

    # Check file size
    return $self->render( text => 'File is too big.', status => 200 )
        if $self->req->is_limit_exceeded;

    # Process uploaded file
    return $self->redirect_to('index')
        unless my $vdna = $self->param('vdna');
    my $size = $vdna->size;
    my $name = $vdna->filename;

    #my $dna_file = catfile( "/tmp/$name" );
    #$vdna->move_to( $dna_file );

    #my $dur  = dna_duration( $dna_file );
    #my $rest = query_meta($name, $dur);
    `du -sh /Users`;

    $self->res->headers->content_type('text/xml');
    $self->render( text => "<dna><size>$size</size><name>$name</name></dna>" );
};

app->start;

__DATA__

@@ index.html.ep
<!DOCTYPE html>
<html>
  <head><title>Streaming multipart upload</title></head>
  <body>
    %= form_for "vddb" => (enctype => 'multipart/form-data') => begin
    %= file_field 'vdna'
    %= submit_button 'Query'
    % end
 </body>
</html>

在 2014年4月13日星期日UTC+8下午5时07分54秒,方及道写道:
hi:

我用Mojolicious::Lite写了个脚本,基本就是模仿官方文档的,用dev模式,morbe app.pl 是可以正常运行的。

但是发现其是blocking request的,只能一个一个处理request。

如何部署才能成为一个生产用的Server呢?

thx
noodles

--
您收到此邮件是因为您订阅了Google网上论坛中的"PerlChina Mongers 讨论组"论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到perlchina+unsubscribe@googlegroups.com
要发帖到此论坛,请发送电子邮件至perlchina@googlegroups.com
通过http://groups.google.com/group/perlchina访问此论坛。
要查看更多选项,请访问https://groups.google.com/d/optout

[PerlChina] Mojolicious::Lite 开发的web app如何部署到生产环境

hi:

我用Mojolicious::Lite写了个脚本,基本就是模仿官方文档的,用dev模式,morbe app.pl 是可以正常运行的。

但是发现其是blocking request的,只能一个一个处理request。

如何部署才能成为一个生产用的Server呢?

thx
noodles

--
您收到此邮件是因为您订阅了Google网上论坛中的"PerlChina Mongers 讨论组"论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到perlchina+unsubscribe@googlegroups.com
要发帖到此论坛,请发送电子邮件至perlchina@googlegroups.com
通过http://groups.google.com/group/perlchina访问此论坛。
要查看更多选项,请访问https://groups.google.com/d/optout