为什么在AppEngine / Java中默认禁用并发请求?

时间:2011-06-17 11:39:23

标签: java google-app-engine

令我惊讶的是,我发现AppEngine应用程序服务器连续请求。最近Java应用程序可以同时处理服务器请求,默认情况下禁用它(reference)。

默认情况下禁用并发请求的原因是什么? Web应用程序本质上意味着同时为多个请求提供服务,无论它们是用Java,Python还是PHP编写的。在我看来,这是一个人为的限制。

4 个答案:

答案 0 :(得分:6)

这可能与AppEngine在开始时没有支持并发请求有关。该功能仅在1.4.3版本(2011年3月30日)中为Java添加。因此,一些开发人员可能已经编写并测试了他们的应用程序,以便一次只对一个线程正常运行。

一旦Google构建了支持并发请求的基础架构和代码,他们可能一直担心默认启用并发,因为它可能会破坏现有应用程序。因此选择接近的原因。

有些GAE人检查StackOverflow,所以我们可能需要听取他们的意见。

答案 1 :(得分:1)

我认为这是默认情况下更好的选择,因为许多新手程序员正在对appengine进行编码,并期望采用简约方法而不是缩放/音量。

并发PHP或python(基于进程)不会弄乱对象数据,但Java可以(基于线程)。这是主要的区别。

答案 2 :(得分:1)

可能为了避免已经部署的应用程序的回归而不是线程安全...

答案 3 :(得分:0)

在GAE doc中,“注意:如果您希望使用并发请求,则在启用之前,您的应用程序代码需要使用正确的线程同步。”对于并发请求的危险是非常明确的 正如上面其他人所说的那样,默认情况下不允许使用此功能并将其提供给深入开发文档的高级开发人员的危险性较低。
然而,它写得很小,在文档的最后,所以不容易看到它:)