【问题标题】:How to determine if a play app is running on a worker dyno on heroku?如何确定一个游戏应用程序是否在 heroku 上的工作人员测功机上运行?
【发布时间】:2014-01-14 08:13:15
【问题描述】:

我有一个在 heroku 上运行的 play 1.2.5 应用程序,我想将所有工作换成一个工人测功机,这样它们就不会随着网络测功机扩展。

为此,我需要区分应用程序是在网络上运行还是在工作人员测功机上运行。

有没有办法通过使用 procfile 传递命令行参数来实现?

目前我看到,通过传递自定义 CLI 参数无法创建 JVM...

提前谢谢你!

【问题讨论】:

    标签: heroku playframework worker


    【解决方案1】:

    Heroku 使用 web 作为 web dynos 的进程类型。

    您需要在Procfile 中声明您的测功机,您可以在其中指定他们的process types

    您可以使用任何您喜欢的标识符,但建议使用worker,这似乎是一个很好的约定。

    然后您可以使用以下方法扩展您的个人测功机类型:

    heroku ps:scale web=1
    

    heroku ps:scale worker=1
    

    另外,this post has a good answer 可能会对您有所帮助。

    【讨论】:

    • 嗨,谢谢你的回答,但我的问题只是我如何才能读出正在运行的进程类型,因为我希望 play 作业只在工人测功机上运行。
    • 好的,我对 Play 的了解不够多,无法理解您的意思,但这就是您在 Heroku 上配置它的方式。您可以使用heroku ps 查看当前正在运行的内容
    【解决方案2】:

    好的,我自己找到了:

    通过在procfile中添加-D参数,可以判断play正在运行的环境。

    所以我的 procfile 看起来像:

    web: play run --http.port=$PORT $PLAY_OPTS
    worker: play run --http.port=$PORT $PLAY_OPTS -Dprocesstype=worker
    

    通过使用

    System.getProperty("processtype");
    

    我可以确保,我在一个工人测功机上,然后才处理我的工作。

    【讨论】:

      猜你喜欢
      • 2014-09-07
      • 2020-05-18
      • 2016-07-26
      • 2015-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-23
      相关资源
      最近更新 更多