我目前正在使用谷歌应用引擎作为我的移动应用程序后端。我有一些无法在gae环境中执行的任务(主要是使用opencv进行图像识别)。我的目的是保留gae并使用AWS来执行这些特定任务。
是否有一种简单的方法可以将特定任务从gae传递到AWS?例如。任务队列?
答案 0 :(得分:2)
您可以将任务从GAE推送到AWS,也可以让您的AWS实例从GAE中提取任务。
如果您将任务从GAE推送到AWS,则可以使用URLFetch
将数据推送到AWS实例。
如果您希望AWS实例从GAE中提取任务,您可以让GAE实例将其任务放入GAE Pull Queue
,然后让您的AWS实例使用Task Queue REST API
来租用任务从队列中。
在任何一种情况下,AWS实例都可以通过对GAE servlet的简单POST请求报告处理结果,或者通过上述REST API
插入任务,稍后由GAE实例租用。如果您想控制GAE应用处理结果的速率,后者可能很有用。
答案 1 :(得分:1)
您是否考虑过使用亚马逊简单队列服务? http://aws.amazon.com/sqs/
您应该可以使用标准的http clint从gae向队列中添加项目。
答案 2 :(得分:1)
不确定。 AppEngine有一个Task Queue,您可以通过简单地实施DeferredTask来完成任务。在该任务中,您可以make requests到AWS。
答案 3 :(得分:1)
免责声明:我是AppScale项目的首席开发人员。
你可以采用AppScale的一种方式 - 它是在Amazon EC2(以及其他云)上运行的App Engine API的开源实现。由于它是开源的,您可以更改我们随附的AppServer以启用OpenCV。这需要您在AWS中运行您的App Engine应用程序,但您可以获得创意并拥有与Google一起运行的应用程序副本,并让它仅在您需要时将任务队列请求发送到在AWS中运行的应用程序版本使用OpenCV库。
答案 4 :(得分:0)
您打算在GAE中保留应用程序并使用AWS执行一些无法在GAE中执行的任务,这对我来说是一个正确的方案。
我想分享一些想法和一些资源来回答你问题的主要部分:
是否有一种简单的方法可以将特定任务从gae传递到AWS?例如。任务队列?
如果您需要GAE和AWS一直执行任务(24/7),那么您的应用程序肯定会依赖于批处理计划或任务队列。它们由GAE提供。
但是,如果您可以安排在GAE中执行任务并按间隔执行AWG(每天说两次,每次不到一小时),您可以不必使用它们,只要您可以将GAE管理到{ {3}}。
对于此方案,您需要为put the data on Google Cloud Storage (GCS) as public设置AWS EC2实例,并让实例On/Off Schedule通过指向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,以便随时用作移动应用程序后端。
以下是一些需要考虑的选项: