Javascript Dancer2(Perl):在后台启动外部程序

Javascript Dancer2(Perl):在后台启动外部程序,javascript,perl,web-applications,dancer,Javascript,Perl,Web Applications,Dancer,我使用Dancer2制作了一个web应用程序。我需要根据ajax请求调用外部程序。问题是请求会一直冻结,直到程序完成。我尝试了一些方法,比如在systemcall和fork中使用& 以下是简化代码: Perl: javascript: $(document).ready(function() { jQuery.get('/startscript', getSomething); }); function getSomething(data){ jQuery.get('/gett

我使用Dancer2制作了一个web应用程序。我需要根据ajax请求调用外部程序。问题是请求会一直冻结,直到程序完成。我尝试了一些方法,比如在systemcall和fork中使用&

以下是简化代码:

Perl:

javascript:

$(document).ready(function() {
    jQuery.get('/startscript', getSomething);
});

function getSomething(data){
    jQuery.get('/gettest', getSomething);
    console.log(data);
}

这是一个老问题,但是下面的方法对我来说很有效-使用
&
让shell在后台运行命令。这会立即将控制权返回给路由处理程序,并且命令会在后台运行

Perl:


这是一个老问题,但是下面的方法对我来说很有效-使用
&
让shell在后台运行命令。这会立即将控制权返回给路由处理程序,并且命令会在后台运行

Perl:


什么部位结冰?浏览器在前端,还是后端?对于后端,您如何运行应用程序?使用单个进程(即perl app.pl)还是使用具有多个进程的PSGI服务器?你有没有调查过Dancer2的任何事件?SawyerX结尾的某个地方正在讨论将异步AnyEvent与D2一起使用。我找不到比这更新的东西了,但是在某个地方有关于它的东西。我想它是后端的,因为浏览器等待响应的时间正好是10秒。我的应用程序使用PSGI在apache上运行,但我也尝试使用plackup启动它。我会看一看任何事件。我不确定如果你退出D2进程会发生什么,但感觉不对。您可以使用支持多个进程的PSGI服务器部署应用程序,然后执行系统调用。这将使它只阻塞其中一个进程。但我认为最好的办法是调查任何事件。什么部分会冻结?浏览器在前端,还是后端?对于后端,您如何运行应用程序?使用单个进程(即perl app.pl)还是使用具有多个进程的PSGI服务器?你有没有调查过Dancer2的任何事件?SawyerX结尾的某个地方正在讨论将异步AnyEvent与D2一起使用。我找不到比这更新的东西了,但是在某个地方有关于它的东西。我想它是后端的,因为浏览器等待响应的时间正好是10秒。我的应用程序使用PSGI在apache上运行,但我也尝试使用plackup启动它。我会看一看任何事件。我不确定如果你退出D2进程会发生什么,但感觉不对。您可以使用支持多个进程的PSGI服务器部署应用程序,然后执行系统调用。这将使它只阻塞其中一个进程。但我认为最好的办法是调查任何事件。
$(document).ready(function() {
    jQuery.get('/startscript', getSomething);
});

function getSomething(data){
    jQuery.get('/gettest', getSomething);
    console.log(data);
}
post '/run-slow-script-in-background' => sub {
    my $slow_command = q{/full/path/to/slow/script --arg1 what --arg2 ever &};
    system($slow_command);
};