【发布时间】:2014-01-14 08:13:15
【问题描述】:
我有一个在 heroku 上运行的 play 1.2.5 应用程序,我想将所有工作换成一个工人测功机,这样它们就不会随着网络测功机扩展。
为此,我需要区分应用程序是在网络上运行还是在工作人员测功机上运行。
有没有办法通过使用 procfile 传递命令行参数来实现?
目前我看到,通过传递自定义 CLI 参数无法创建 JVM...
提前谢谢你!
【问题讨论】:
标签: heroku playframework worker
我有一个在 heroku 上运行的 play 1.2.5 应用程序,我想将所有工作换成一个工人测功机,这样它们就不会随着网络测功机扩展。
为此,我需要区分应用程序是在网络上运行还是在工作人员测功机上运行。
有没有办法通过使用 procfile 传递命令行参数来实现?
目前我看到,通过传递自定义 CLI 参数无法创建 JVM...
提前谢谢你!
【问题讨论】:
标签: heroku playframework worker
Heroku 使用 web 作为 web dynos 的进程类型。
您需要在Procfile 中声明您的测功机,您可以在其中指定他们的process types。
您可以使用任何您喜欢的标识符,但建议使用worker,这似乎是一个很好的约定。
然后您可以使用以下方法扩展您的个人测功机类型:
heroku ps:scale web=1
或
heroku ps:scale worker=1
另外,this post has a good answer 可能会对您有所帮助。
【讨论】:
heroku ps 查看当前正在运行的内容
好的,我自己找到了:
通过在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");
我可以确保,我在一个工人测功机上,然后才处理我的工作。
【讨论】: