我有一個在heroku上運行的遊戲1.2.5應用程序,我想將所有工作換成工人動態測試,所以它們不會與網絡動態調整。如何確定一個遊戲應用程序是否在heroku上的一個工人測功機上運行?
要做到這一點,我需要區分,如果應用程序運行在網絡或工人測功機上。
有什麼辦法通過使用procfile傳遞命令行參數來完成該任務嗎?
目前我看到的,通過傳遞自定義CLI參數的JVM創建失敗......
感謝你提前!
我有一個在heroku上運行的遊戲1.2.5應用程序,我想將所有工作換成工人動態測試,所以它們不會與網絡動態調整。如何確定一個遊戲應用程序是否在heroku上的一個工人測功機上運行?
要做到這一點,我需要區分,如果應用程序運行在網絡或工人測功機上。
有什麼辦法通過使用procfile傳遞命令行參數來完成該任務嗎?
目前我看到的,通過傳遞自定義CLI參數的JVM創建失敗......
感謝你提前!
好吧,我發現我自己:
通過添加-D參數procfile,我能確定的環境該劇在運行
所以我procfile的將會是什麼樣的。
web: play run --http.port=$PORT $PLAY_OPTS
worker: play run --http.port=$PORT $PLAY_OPTS -Dprocesstype=worker
通過使用
System.getProperty("processtype");
我可以保證,我是一個工人測功機和凝固酶原只有當我的工作。
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可以幫助你。
嗨,謝謝你的回答,但我的問題僅僅是我怎樣才能讀出哪種進程類型的遊戲正在運行,因爲我想玩遊戲作業只能在工作人員的dynos上運行。 – nepumuk
好吧,我對Play的瞭解不夠多,不知道你的意思,但這是你如何在Heroku上配置它。您可以使用'heroku ps'查看當前正在運行的內容 – jordelver