【问题标题】:What factors do influence the Catalyst app restart mechanism?哪些因素会影响 Catalyst 应用重启机制?
【发布时间】:2011-10-27 23:52:51
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: perl catalyst


    【解决方案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>
    

    【讨论】:

      【解决方案2】:

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

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

      在我找到this discussion of Plack and restart 时,我对它进行了简短的研究。

      【讨论】:

      • 这可能与数据库连接有关。进一步的实验表明,如果应用程序被访问(例如从浏览器),它不会重新启动。我想可能存在某种与 DB 的开放连接,它使应用程序保持运行,并且它们不会让它正常重启。我正在使用 Catalyst::Model::DBI。有什么想法吗?
      • 这是一种可能性,尽管我没有看到它出现在我用 MySQL、Informix 或 SQLite 编写的 Cat 应用程序中。如果您 -> 在请求周期结束时与数据库断开连接(如果您的模板访问数据库,这通常需要将 RenderView 与结束处理程序分开),这会改变行为吗?
      • 我在 end 处理程序中添加了一个显式 disconnect (RenderView 被移动到另一个子并且 forward 是用过的)。现在 DB 处理程序在每次请求后断开连接(在 DBI 模型中添加了一条调试消息以查看此内容)。行为不变。如果这有帮助,我正在使用 Oracle。
      • 我们谈论的是独立的 Catalyst 开发服务器,是吗? myapp_server.pl 还是类似的?一个想法:“观看”行为源于它被调用的当前工作目录。您总是从 MyApp 目录以 bin/myapp_server.pl 的形式启动,还是在 $PATH 中的 MyApp/bin 并从任何地方启动?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-09
      • 2022-01-14
      • 2016-05-04
      • 1970-01-01
      • 1970-01-01
      • 2020-11-28
      相关资源
      最近更新 更多