【问题标题】:Using models in Play Framework for Scala在 Play Framework for Scala 中使用模型
【发布时间】:2018-02-17 13:21:11
【问题描述】:

我有一些 Play Framework 模型看起来类似于:

class BookieRepo @Inject()(protected val dbConfigProvider: DatabaseConfigProvider) {
  val dbConfig = dbConfigProvider.get[JdbcProfile]
  val db = dbConfig.db
  import dbConfig.profile.api._

  def all: Future[Seq[BookiesRow]] =
    db.run(Bookies.result)
}

我的 Web 应用程序运行良好并且能够使用这些模型。但是,我需要调用我的应用程序的一些“独立”部分来从网站收集数据并将其放入数据库。 在扩展 App 并由 crontab 启动的对象中获取对这些模型方法的访问权限的推荐方法是什么? 我在这里需要的是 StaticApplication 吗?这是否意味着我将同时运行 2 个应用程序(标准应用程序和静态应用程序)?

【问题讨论】:

    标签: scala playframework


    【解决方案1】:

    因此,在以前版本的 Play Framework 中,这似乎可以通过 GlobalSettings 实现。

    如果您使用的是 2.6.x 版本,他们建议将您需要在启动时运行的代码放在构造函数中的依赖注入类中。 https://www.playframework.com/documentation/2.6.x/GlobalSettings

    如果您使用的是 2.6.x 之前的 Play Framework 版本,您应该仍然可以通过查看 https://playframework.com/documentation/2.0/ScalaGlobal

    祝你好运!

    【讨论】:

    • 好的,因为我需要定期调用一些操作,所以对我来说,我似乎需要通过 curl 或 wget 将一些 http 调用放入 crontab 中,并在 Scala 代码中使用 HttpRequestHandler 。对吗?
    • 似乎根本不需要使用 HttpRequestHandler,而是在通过来自 crontab 的 http 请求调用此控制器后在某些控制器中调用适当的操作。有更好的解决方案吗?
    • 好的,为了弄清楚这一点,您需要在启动时以及定期执行一些操作(从某处获取数据并插入数据库)?此外,请注意使用“行动”一词的措辞。由于 Play Actions (playframework.com/documentation/2.6.x/ScalaActions) 的缘故,这有点令人困惑,我相信您知道
    • 你是对的 - 我以不正确的方式使用了行动这个词。我只需要定期获取数据并插入它,而不是在启动时。
    • 好的,我不知道有关您的应用程序的所有细节,因此很难提出“最佳”行动计划。如果您已经在使用 crontab,那么它可能是一个不错的解决方案,但我相信这意味着您正在以您不希望的方式公开您的 API。为了保持隐私,您可以使用 Akka 调度程序 doc.akka.io/docs/akka/2.5/guide/introduction.html,它允许您在本质上执行 setInterval(),在给定时间后重复执行某些操作,直到您取消它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-04
    相关资源
    最近更新 更多