2014-01-14 21 views
1

我有一個在heroku上運行的遊戲1.2.5應用程序,我想將所有工作換成工人動態測試,所以它們不會與網絡動態調整。如何確定一個遊戲應用程序是否在heroku上的一個工人測功機上運行?

要做到這一點,我需要區分,如果應用程序運行在網絡或工人測功機上。

有什麼辦法通過使用procfile傳遞命令行參數來完成該任務嗎?

目前我看到的,通過傳遞自定義CLI參數的JVM創建失敗......

感謝你提前!

回答

0

好吧,我發現我自己:

通過添加-D參數procfile,我能確定的環境該劇在運行

所以我procfile的將會是什麼樣的。

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

通過使用

System.getProperty("processtype"); 

我可以保證,我是一個工人測功機和凝固酶原只有當我的工作。

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

嗨,謝謝你的回答,但我的問題僅僅是我怎樣才能讀出哪種進程類型的遊戲正在運行,因爲我想玩遊戲作業只能在工作人員的dynos上運行。 – nepumuk

+0

好吧,我對Play的瞭解不夠多,不知道你的意思,但這是你如何在Heroku上配置它。您可以使用'heroku ps'查看當前正在運行的內容 – jordelver

相關問題