【问题标题】:Akka Scheduling in Heroku with Play 2 Framework使用 Play 2 框架在 Heroku 中进行 Akka 调度
【发布时间】:2012-05-26 16:45:23
【问题描述】:

我无法让 Akka 调度方法在 Heroku 中正常工作。它在本地运行良好,并将“心跳”打印到日志中。

这是有问题的文件:https://github.com/magnusart/actor-test/blob/master/app/Global.scala 和下面的 sn-p。

override def onStart(app: Application) {
    Logger.debug("Starting application")
    Akka.system(app).scheduler.schedule(2 seconds, 10 seconds) {
      Logger.debug("Heartbeat")
    }
  }

完整的应用程序在这里(为此目的而隔离,也在 actor-test.herokuapp.com 上)。 https://github.com/magnusart/actor-test

启动后发生的事情是我在日志中看到Starting application,然后我看不到任何进一步的内容:

2012-05-26T16:29:40+00:00 heroku[web.1]: Starting process with command `target/start -Dhttp.port=43943 -Xmx384m -Xss512k -XX:+UseCompressedOops`
2012-05-26T16:29:41+00:00 app[web.1]: Play server process ID is 3
2012-05-26T16:29:42+00:00 app[web.1]: [debug] application - Starting application
2012-05-26T16:29:42+00:00 app[web.1]: [info] play - Starting application default Akka system.
2012-05-26T16:29:42+00:00 app[web.1]: [info] play - Application started (Prod)
2012-05-26T16:29:42+00:00 app[web.1]: [info] play - Listening for HTTP on port 43943...

所以预定的演员实际上似乎并没有开始(它当然在本地开始)。我在 Heroku Cedar 上。我很感激任何关于为什么这不起作用的提示,我错过了什么?

BR 马格努斯·安德森


更新 根据我的发现,这似乎是 Play 2 中的一个错误(我正在运行 2.0.1 版),并且与 Heroku 无关。我已经用相关信息更新了 Play 2 Lighthouse 门票。门票可以在这里找到:https://play.lighthouseapp.com/projects/82401-play-20/tickets/448-play-dist-ignores-loggerxml#ticket-448-5

【问题讨论】:

  • 究竟是什么不工作?你的意思是它实际上根本没有做心跳?如果您只在 1 台测功机上运行,​​这可能是由于 dyno idling 造成的。
  • 我不知道 Heroku 上是否打印了调试消息,因为它应该在“生产”模式下运行应用程序。
  • 您好,很抱歉信息不完整。我现在已经更新了原始问题中的文字。这包括对 James 和 nico_ekito 问题的回答。我确实使用 heroku ps 查看了该进程,并且该进程还没有闲置(在日志中一个小时后出现)。如果需要进一步说明,请添加评论。
  • 实际上,nico_ekito 可能正在做某事,这是一个很好的提示。我尝试在我的本地机器上使用游戏舞台,但我也没有得到任何打印输出。所以肯定有一些我不明白的游戏舞台发生了什么。我会在这里调查更多的帖子。
  • 好像是日志记录。当我将演员记录错误时,它实际上会在日志中打印出“Heardbeat”。我找到了这个线程:groups.google.com/forum/?fromgroups#!topic/play-framework/…,这似乎在谈论同样的问题。根据该线程,Play 在启动期间重置日志记录。这可以解释为什么我从启动方法中看到调试日志消息,但在那之后却没有。感谢您的帮助。 Nico_ekito:如果你发布一个概述我会接受它的答案,因为你暗示了问题所在。

标签: heroku playframework playframework-2.0 akka


【解决方案1】:

问题似乎来自您的记录器设置,因为在您的 Heartbeat 中,您会打印一条带有“调试”级别的消息。 AFAIK,Heroku 在“生产”模式下运行您的 Play 应用程序(=“播放开始”),即日志级别设置为“信息”,因此调试消息永远不会打印在 Heroku 上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    • 2013-04-03
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多