哪些因素会影响Catalyst应用重启机制?

时间:2011-08-16 11:27:59

标签: perl catalyst

我有一个Perl Catalyst应用程序,它通常使用-r参数启动。 我注意到了两种行为:

1)应用程序在代码的每次“虚拟更改”时正常重启(通过“虚拟更改”我的意思是添加一个空格或删除一个空格,像这样smth)

2)应用程序没有重启(相同的“虚拟更改”),显示“尝试重新启动服务器”文本并且应用程序在此状态下仍然被阻止(我必须 kill 手动)

行为取决于实际代码。似乎有一些与代码相关的东西会影响哪一行为在某一时刻起作用。行为是恒定的,即相同的代码具有2的恒定行为 应用程序本身似乎工作正常,没有任何错误或警告。

代码如何影响这种行为? (我的意思是一般) 哪些因素与重启机制有关?

2 个答案:

答案 0 :(得分:1)

这是因为在较新版本的Oracle客户端中信号处理已发生变化。使用“ora_connect_with_default_signals”选项恢复默认信号处理程序。

以下是如何在DBIx :: Class模型(MyApp :: Model :: DB)中执行此操作:

connect_info => [
    'dbi:Oracle:mydb',
    'username',
    'password',
    {
        ora_connect_with_default_signals => [ 'INT' ],
    },
],

或在配置文件中:

<Model DBIC>
    connect_info  dbi:Oracle:mydb
    connect_info  username
    connect_info  password
    <connect_info>
        ora_connect_with_default_signals [ INT ]
    </connect_info>
</Model>

答案 1 :(得分:0)

通过PSGI(即plackup -r)使用独立服务器时,我看到了类似的行为,服务器重新启动一次,后续代码更改产生消息但没有重新启动。

但是,我从未见过内置服务器myapp_server.pl -r以这种方式运行。对perl模块,YAML文件等的任何更改都会成功触发重新启动。

在我做过的简短研究中,我做了this discussion of Plack and restart

相关问题