代码之家  ›  专栏  ›  技术社区  ›  Carl

谷歌应用引擎:任务与线程?

  •  2
  • Carl  · 技术社区  · 15 年前

    我有一个本地的科学应用程序,它使用线程处理大型计算的独立部分。我的团队希望这成为一个Web应用程序,所以现在我正在研究如何移植它(所以请原谅任何完整的愚蠢声明)。我正在使用谷歌应用引擎来处理它的“网络”部分,但我仍在研究其他哪些翻译是合适的。

    我的第一个倾向是完全保留计算(例如,将一些Web表单数据消化成适当的格式,将其传递到生成线程的计算器中,等等)。

    不过,我也在读 Queue S+ TaskOptions -这看起来像是我应该用的,而不是 ExecutorService + Callable . 单独的子计算可能需要一点时间来处理(尽管它们在所需时间上也可能有很大的差异),所以我想理想情况下,我希望用户请求整个计算,然后被带到一个页面,该页面在结果可用时加载结果。

    排队 S+ 任务选项 正确的使用方法?如果没有,是什么?如果是这样的话,有没有方便的类似例子来说明我要做的事情?

    最后,我的团队对于计算内部的广泛发布有一些短期的疑虑,所以它的详细信息都是服务器端的——这是否可以减轻这些顾虑?

    最终(在一些出版物等之后),我们计划公开这些内部构件,然后推测Web版本可以移动计算客户端。现在是否有更好的方法来实现,从而使将来的翻译更简单?或者这甚至不值得担心(因为我在本地应用程序中已经有了一个“客户端”版本)?

    2 回复  |  直到 15 年前
        1
  •  3
  •   Peter Recore    15 年前
    1. 应用程序引擎中的所有请求(包括任务)的时间限制为30秒。如果你的计算时间比这长,你需要找到一种方法把它们分成小块。应用引擎的最佳选择是网络应用,而不是数字处理。

    2. 如果您希望能够在客户机和服务器端共享代码,一个选项是研究GWT。(谷歌Web工具包)它将允许您使用Java源代码编写客户端,然后将其转换为JavaScript。这将是一种重用已有的数字处理代码的方法。

        2
  •  2
  •   Rahul    15 年前

    无法在应用程序引擎上创建线程。任务队列+任务选项将是前进的道路。

    如果你想把事情放在内部——那么把它放在服务器端是现在最安全的事情。但是,您可以考虑将您的工作流程公开为服务,以便将来客户机可以与相同的服务进行对话。