从应用引擎访问计算引擎。

我在计算引擎上运行了一个使用Torch来预测图像对象的实例。我想使用一个简单的网络界面,用户可以上传一张图片,图片将被发送到服务器(计算引擎),对象预测后,列表将返回给用户。 在我的计算引擎(Ubuntu14.04)中,这行代码用于对图像中的对象进行预测。(计算引擎中的所有其他设置已经完成)

th eval.lua -model /path/to/model -image_folder /path/to/image/directory -num_images 10

我想从网络应用程序中调用此行,并将图像传递到图像文件夹中,并得到对象的列表。我该怎么做呢?

点赞
用户1037753
用户1037753

在过去的项目中,我讨论并使用了不同的方法来在Google App Engine和Google Compute Engine之间通信。一般来说,存在两种常见方法:

  • 从App Engine进行编排:在这种方法中,App Engine应用程序是主动方,向计算实例上的服务发送请求。这就是Igor Artamonov在他的评论中描述的。我们在计算实例上使用了一个tomcat实例,运行了一个完整的rest api来调用实例上的命令。可能的帮助者包括:

    • 使用Google Compute API从App Engine中,您可以获取计算实例的外部IP地址。这样您就知道您的请求应该去哪里。
  • 从计算实例轮询:由于您知道您的App Engine应用程序的应用ID,您可以在计算实例上编写一个简单的循环,从App Engine应用程序请求新的作业。我曾经将此方法与编排结合使用,编排将向不再需要的实例发送关闭命令,从而减少了对App Engine轮询的负载。如果创建了新作业,则会启动一个新的计算实例,该实例将轮询,直到再次接收到关闭命令。

这两种方法都很好用。如果您使用Compute API并知道计算实例的IP,则可以将轮询端点和命令调用请求限制为这些IP以获得基本的安全性。

虽然我会尽量避免过多的轮询,但是,让我给您举个例子:

主动轮询是发起工作流流程的可怜解决方案。(javaworld.com)

但是,如果您在计算实例完成工作负载后关闭它们,我看不出为什么您不应该使用轮询。如果您不这样做,并将计算实例数量增加到几个实例,您将在App Engine应用程序上增加负载却没有实现任何成果,只会增加成本。

2015-11-29 10:54:39