2017-05-03 91 views
0

我使用Perl Dancer2與基本設置的RESTful服務框架(使用命令如何允許多個連接到Dancer2

dancer2 -a MyWeb即可::應用

生成模板文件並在自動生成的MyWeb-App/lib/MyWeb/App.pm文件中添加「get」路由)。最近我發現,當一個請求需要很長一段時間才能完成,服務器被鎖定,只能提供該請求。例如

get '/' => sub {# simple request to redirect to a static page 
    template 'index'; #template directive Templates all go into the views/ 
}; 
get '/compute' => sub{ 
    for (my $i=0;$i<1000000;$i++){ 
     wait(1000); #simulate long computation time 
    } 
    return "Done!"; 
}; 

當首先在一個選項卡http://myhost.com/compute進入,在另一個選項卡中的鏈接http://myhost.com/不會顯示任何東西,直到上一個/計算路線完成,這在我看來,只有一個連接被允許在同一時間。問題是如何設置Dancer2服務器以允許多個連接,即上面提到的兩個選項卡可以同時運行?

非常感謝!

+2

請參閱[Dancer :: Deployment](https://metacpan.org/pod/distribution/Dancer/lib/Dancer/Deployment.pod)和[Dancer2 :: Manual :: Deployment](https:// metacpan。組織/ POD /分銷/ Dancer2/lib中/ Dancer2 /手動/ Deployment.pod)。 –

+1

非常感謝我在perldancer網站上找不到的鏈接 – wizardfan

回答

3

你如何部署你的Dancer2應用程序?如果您使用的是plackup,那麼您應該認識到plackup所使用的默認服務器僅支持單個連接。但是,您可以使用-s選項更改爲類似Starman,它支持多個連接。有關更多詳細信息,請參閱Dancer2::Manual::Deployment

如果情況並非如此,那麼您需要告訴我們更多關於您的應用程序的信息。請求是否可能被阻塞,因爲它們都需要訪問某些共享資源?