我目前使用谷歌應用引擎作爲我的移動應用後端。我有一些無法在gae環境中執行的任務(主要是使用opencv進行圖像識別)。我的意圖是保留gae並使用AWS執行這些特定任務。使用亞馬遜網絡服務作爲谷歌應用引擎後端
有沒有簡單的方法將特定的任務從gae傳遞給AWS?例如。一個任務隊列?
我目前使用谷歌應用引擎作爲我的移動應用後端。我有一些無法在gae環境中執行的任務(主要是使用opencv進行圖像識別)。我的意圖是保留gae並使用AWS執行這些特定任務。使用亞馬遜網絡服務作爲谷歌應用引擎後端
有沒有簡單的方法將特定的任務從gae傳遞給AWS?例如。一個任務隊列?
你有沒有考慮過使用亞馬遜簡單隊列服務? http://aws.amazon.com/sqs/
您應該可以使用標準http clint將項目從gae添加到隊列中。
當然。 AppEngine有一個,你可以通過簡單地實現DeferredTask來完成你的任務。在該任務中,您可以將make requests指定給AWS。
您既可以將任務從GAE推送到AWS,也可以讓AWS實例從GAE中提取任務。
如果您將任務從GAE推送到AWS,您可以使用URLFetch
將數據推送到AWS實例。
如果您希望讓AWS實例從GAE提取任務,則可以讓GAE實例將其任務放入GAE Pull Queue
中,然後讓AWS實例使用Task Queue REST API
從隊列中租用任務。
無論哪種情況,AWS實例都可以通過簡單的POST請求向GAE servlet報告處理結果,或者通過上面提到的REST API
插入任務,這些任務稍後將由您的GAE實例租用。如果您想控制GAE應用程序處理結果的速度,後者可能很有用。
聲明:我是AppScale項目的首席開發人員。
您可以使用的一種方式是使用AppScale - 它是運行在Amazon EC2(以及其他雲)上的App Engine API的開源實現。由於它是開源的,你可以改變我們隨附的AppServer來啓用OpenCV。這需要您在AWS中運行您的App Engine應用程序,但您可以獲得創意並擁有與Google一起運行的應用程序的副本,並且只有在需要時纔會向您在AWS中運行的應用程序的版本發送任務隊列請求使用OpenCV庫。
您打算在GAE中保留應用程序並使用AWS執行一些無法在GAE中執行的任務似乎對我來說是一個正確的場景。
我想有一些資源共享以及一些想法來回答你的問題的主要部分:
有一個簡單的方法來從GAE具體任務傳遞給AWS?例如。一個任務隊列?
如果您需要GAE和AWS一直執行任務(24/7),那麼您的應用程序肯定會依賴於批處理調度或任務隊列。它們由GAE提供。
但是,如果您可以安排在GAE中完成任務並按間隔(例如每天兩次,每次不到一小時)執行AWG,則只要您可以管理GAE,就可以不必使用它們put the data on Google Cloud Storage (GCS) as public。
對於這種情況,你需要設置AWS EC2實例On/Off Schedule,讓實例to run a boot script using cloud-init通過你的域指出,GCS(c.storage.googleapis.com)像這樣來收集數據:
wget -q --read-timeout=0.0 --waitretry=5 --tries=400 \\
--background http://your.domain.com/yourfile?q=XXX...
通過從GCS獲取數據,AWS可以執行這些特定任務。讓它啓動GAE來清理數據並將結果返回給GCS,以準備用作移動應用程序的後端。
以下是一些選項來考慮: