從我對Heroku平臺的理解中,他們只允許每個可處理HTTP請求的應用程序使用一個dyno。在Java應用程序中,我的目標是定期處理一天運行一兩次,從Facebook服務器獲取信息並相應地處理它。如果後臺工作者dyno無法處理web請求,那麼我應該如何着手在web dyno中編寫一個反覆出現的進程?如何在使網絡請求的Heroku Java應用程序中運行週期性進程
回答
從這個意義上說,「處理HTTP請求」是指連接的監聽端而不是發送端。在Heroku上,應用程序可以有一個單獨的Web進程*,用於監聽HTTP連接和許多其他啓動/發送HTTP請求(或連接到其他非HTTP系統)的進程。
*注意:您可以根據需要分配儘可能多的Dynos來運行每個進程。
要運行定期向外部服務(如Facebook)發出請求的進程,可以使用Heroku Scheduler Add-on。然後,您可以將結果存儲在許多relational or NoSQL data-storage add-ons之一中,也可以通過諸如CloudAMQP之類的消息傳遞附加程序將結果發送到其他進程。
好吧,聽起來不錯。我唯一的問題是Heroku Scheduler加載項可以運行多長時間?如果它允許一段合理的時間,它應該沒問題,但如果它少於10-15分鐘,那麼應用程序真正縮放的時間可能不夠。 – 2012-08-06 18:57:59
沒有時間限制,但無論過程運行多長時間,您都會收到帳單。 – 2012-08-06 21:14:33
如果平臺限制你,爲什麼要使用它?
還有其他平臺可以讓你執行此操作。 您可以使用OpenShift輕鬆地將Java應用程序部署到雲中,然後您可以使用Java API,而且無論如何,據我所知。
OpenShift也使用git,與Heroku一樣。
他們都是PaaS,所以這個概念是完全一樣的,我認爲你會很容易地嘗試OpenShift。
而且您還可以檢查Google App Engine以查看它是否具有此類限制。
對不起,我不知道具體的問題,我只知道至少「一個競爭對手」沒有這樣的限制。
在這種情況下,如果沒有解決此限制,可能需要查看另一個PaaS。 Heroku之外的另一臺服務器負責維護此維護任務是否可行? (後臺進程只更新數據庫中的值) – 2012-08-04 19:24:18
@Ryan Sasson - 您將在哪裏託管此服務器以及誰將處理其部署?你也不需要在雲端嗎? – 2012-08-05 20:00:10
- 1. Heroku的Java應用程序的網絡
- 2. Heroku Django應用程序中的網絡錯誤(請求超時)
- 3. 如何在Android應用程序的後臺進行網絡請求?
- 4. 使用iOS應用程序在後臺執行網絡請求
- 5. 在網絡請求後運行後臺進程
- 6. 是否可以在後臺應用程序中進行網絡請求?
- 7. Alamofire在應用程序生命週期中阻止請求
- 8. 使用Java進行網絡編程
- 9. 如何以精確時間週期(即10ms)週期性運行Erlang進程
- 10. 在Java應用程序中強制定期執行週期性任務
- 11. 零iAd請求的應用程序的生命週期
- 12. 使APScheduler在網絡應用程序的後臺運行
- 13. 在Heroku上運行ES6應用程序
- 14. 在Heroku上運行Flask應用程序
- 15. iPhone應用程序,在後臺應用程序中運行http請求
- 16. 在Heroku中運行第二個非web java應用程序
- 17. 通過tor網絡處理Java桌面應用程序中的Web請求?
- 18. 連續的AJAX請求 - 對網絡應用程序的影響?
- 19. 如何使Java應用程序與網站進行交互
- 20. 春季網絡mvc應用程序的請求
- 21. 請求:網絡應用程序的最小框架
- 22. 如何進行網絡應用程序開發?
- 23. 如何從網絡應用程序運行exe
- 24. 如何從Android應用程序發送HTTP請求到Heroku
- 25. 如何在後臺進程中運行linux應用程序?
- 26. 在Android應用程序中運行網絡服務器
- 27. 運行我的應用程序2G網絡上我的應用程序的
- 28. 如何解決網絡農場中的網絡應用程序
- 29. 定期運行Java程序
- 30. 在週期性運行的線程中自動執行代碼
爲什麼不編寫一個獨立的程序來執行該任務,並使用Heroku調度程序插件每天運行一次? – Qsario 2012-08-04 06:36:34
我正在研究這樣的方法,但我遇到了與web路由相同的問題。調度程序實質上是一個定期運行的一次性過程,根據Heroku,一次性過程無法接收HTTP流量(請參閱[鏈接]中的形成動態碼與一次性碼錶(https://devcenter.heroku.com/articles/oneoff-admin-ps)) – 2012-08-04 19:20:40
您能澄清爲什麼您需要該流程來接收網絡請求嗎?如果這個過程應該「從Facebook服務器獲取信息」,那麼這聽起來像你的過程將調用Facebook而不是其他方式。這是一次性測功機的完美可能。 – 2012-08-04 21:43:43