首页 文章

如何确定播放应用程序是否在heroku上的工作器dyno上运行?

提问于
浏览
1

我有一个在heroku上运行的Play 1.2.5应用程序,我想将所有作业换成工作器dyno,因此它们不能与web dynos一起扩展 .

要做到这一点,我需要区分,如果应用程序在Web或工作人员dyno上运行 .

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

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

提前谢谢你!

2 回答

  • 1

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

    您需要在 Procfile 中声明您的dynos,您可以在其中指定process types .

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

    然后,您可以使用以下方法缩放各个dynos类型:

    heroku ps:scale web=1
    

    要么

    heroku ps:scale worker=1
    

    此外,this post has a good answer可能会帮助你 .

  • 0

    好的,我自己找到了:

    通过在proc文件中添加-D参数,我可以确定正在运行的环境播放 .

    所以我的procfile看起来像:

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

    通过使用

    System.getProperty("processtype");
    

    我可以确保,我正在工作的dyno并且只在那时处理我的工作 .

相关问题