设置不活动超时Perl(Mojo)子进程

Bigbob556677

我有一个运行的Perl Mojo服务器,当发布到某个URL时,有一个脚本可以创建一个非常长的进程(大约一分钟的时间)的子进程。

该过程运行大约30秒钟,然后崩溃,并且这里没有抛出异常或生成任何日志。

我自然的假设是,这与连接超时有关,因此我增加了服务器的超时。话虽这么说,我非常有信心这与服务器进程无关,而是perl脚本本身超时。

我在子流程页面上看到文档:

请注意,这不会增加连接的超时,因此,如果分叉的过程将花费很长时间,则可能需要使用Mojolicious :: Plugin :: DefaultHelpers中的“ inactivity_timeout”来增加连接的超时。

DefaultHelpers文档说:

inactivity_timeout

$ c = $ c-> inactivity_timeout(3600);

在Mojo :: IOLoop中使用“ stream”查找当前连接,并尽可能增加超时。

较长的版本

Mojo :: IOLoop-> stream($ c-> tx-> connection)->超时(3600);

但我不确定如何(或在何处)定义不活动超时,或文档中$ c变量的确切含义。

我的代码:

sub long_process{
    my ($self) = @_;
    my $fc = Mojo::IOLoop::Subprocess->new;
    $fc->run(
       sub { 
          my @args = @_; 
          sleep(60);
        },[], 
     );
}

链接:

inactivity_timeout

子过程

这是一个最小的示例:

use Mojolicious::Lite;

get '/',
    sub {
        my $self = shift;
        say Mojo::IOLoop->stream($self->tx->connection)->timeout;
        $self->inactivity_timeout(60);
        say Mojo::IOLoop->stream($self->tx->connection)->timeout;

        my $fc = Mojo::IOLoop::Subprocess->new;
        $fc->run(
                 sub {
                     my @args = @_; 
                     sleep(20);
                      return 'Hello Mojo!';
                 },
                 sub {
                     my ($subprocess, $err, $result) = @_;
                     say $result;
                     $self->stash(result => $result);
                     $self->render(template => 'foo');
                 }
     );
    };

app->start;

__DATA__

@@ foo.html.ep
    %== $result

run()子进程完成后,传递给第二个回调函数进行处理。有关详细信息,请参见Mojo :: IOLoop :: Subprocess

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

等待子进程超时

来自分类Dev

子进程超时失败

来自分类Dev

等待子进程超时

来自分类Dev

超时子进程pid

来自分类Dev

更改 AMQP 不活动超时

来自分类Dev

如何使vala子进程超时?

来自分类Dev

Python中的子进程超时

来自分类Dev

超时终止进程和任何子进程

来自分类Dev

MOJO perl不建议使用的警告

来自分类Dev

如何更改PostgreSQL Studio的不活动超时?

来自分类Dev

使用ScheduledExecutorService实现不活动超时

来自分类Dev

查询不活动后 Azure SQL 超时

来自分类Dev

Python对Popen子进程使用超时

来自分类Dev

(PHP)等待子进程超时退出

来自分类Dev

asyncio在超时时终止子进程

来自分类Dev

超时后杀死多个子进程的子进程?

来自分类Dev

如何清除不活动的进程内存?

来自分类Dev

如何清除不活动的进程内存?

来自分类Dev

Laravel不活动时间设置

来自分类Dev

设置超时中的角变量不刷新?

来自分类Dev

Perl捕获子进程的STDERR和STDOUT

来自分类Dev

如果不活动,如何使gulp-watch超时

来自分类Dev

libCurl上传数据不活动超时不起作用

来自分类Dev

jQuery超时功能在用户不活动时运行

来自分类Dev

30秒的不活动超时将关闭登录屏幕

来自分类Dev

在 NativeScript 中检测应用程序不活动/空闲超时

来自分类Dev

30 分钟不活动后 mongo DB 的套接字超时

来自分类Dev

Python子进程-不返回任何内容

来自分类Dev

Perl父进程挂起,等待子进程读取标准输入