如何确定播放应用程序是否在heroku上的worker dyno上运行?
我在heroku上运行了一个play 1.2.5应用程序,我想把所有的工作都换成一个worker dyno,这样它们就不会和web dyno一起扩展 要做到这一点,我需要区分应用程序是在web上运行还是在worker dyno上运行 有没有办法通过使用procfile传递命令行参数来实现这一点 目前我看到,通过传递自定义CLI参数,JVM无法创建如何确定播放应用程序是否在heroku上的worker dyno上运行?,heroku,playframework,worker,Heroku,Playframework,Worker,我在heroku上运行了一个play 1.2.5应用程序,我想把所有的工作都换成一个worker dyno,这样它们就不会和web dyno一起扩展 要做到这一点,我需要区分应用程序是在web上运行还是在worker dyno上运行 有没有办法通过使用procfile传递命令行参数来实现这一点 目前我看到,通过传递自定义CLI参数,JVM无法创建 提前谢谢你 Heroku使用web作为web动态的处理类型 您需要在Procfile中声明dynos,您可以在其中指定它们的名称 您可以使用任何您喜欢
提前谢谢你 Heroku使用
web
作为web动态的处理类型
您需要在Procfile
中声明dynos,您可以在其中指定它们的名称
您可以使用任何您喜欢的标识符,但建议使用worker
,这似乎是一个很好的惯例
然后,可以使用以下方法缩放各个dynos类型:
heroku ps:scale web=1
或
而且,这可能会对你有所帮助。好的,我自己找到的: 通过向procfile添加-D参数,我可以确定播放正在运行的环境 所以我的procfile看起来像:
web: play run --http.port=$PORT $PLAY_OPTS
worker: play run --http.port=$PORT $PLAY_OPTS -Dprocesstype=worker
利用
System.getProperty("processtype");
我可以确保,我使用的是worker dyno,然后才处理我的作业。嗨,谢谢你的回答,但我的问题只是如何读取正在运行的进程类型play,因为我希望play作业只在worker dyno上运行。好吧,我对play了解得不够,不知道你的意思,但这是你在Heroku上配置它的方式。您可以使用heroku ps查看当前运行的内容
System.getProperty("processtype");