【问题标题】:Is it possible to run Google App Engine Development Server on my own server?是否可以在我自己的服务器上运行 Google App Engine 开发服务器?
【发布时间】:2011-05-04 10:01:57
【问题描述】:

是否可以在我自己的服务器上运行 Google App Engine 开发服务器?开发服务器数据存储在处理高负载方面的能力如何?多大的数据量会削弱它?

【问题讨论】:

    标签: google-app-engine


    【解决方案1】:

    在没有 App Engine 的情况下运行 App Engine 应用的一些选项:

    • TyphoonAE,它使用一堆流行的开源组件运行 Python 应用程序
    • appscale,在 Amazon 的 EC2 云上运行 Python 或 Java 应用程序

    我也没试过。有关两者的更多讨论,请参阅 this question

    如果您只是在公共 IP 上启动 dev_appserver.py,数据存储的性能如何?如果你有很多数据,那就不好了。使用开发服务器时,整个数据存储都保存在内存中,因此当您插入数据时,Python 的内存使用量会攀升。一旦您添加了足够的数据以使您的系统开始交换,您的应用程序将变得异常缓慢。开发服务器中有一个选项可以使用 SQLite 数据存储存根而不是内存存根。这使得大量数据的性能可以接受,但它的效率不如生产数据存储,因此即使数据量很小,数据存储访问也相对较慢。肯定比数据量少的内存数据存储要慢得多。

    将开发服务器作为独立的生产服务器运行通常是个坏主意。与开发服务器一起提供的 API 存根是为开发人员而非用户设计的。例如。发送邮件只是写一个日志条目而不是实际发送邮件;以管理员身份登录需要点击“以管理员身份登录”复选框。

    如果您想将现有应用移出 App Engine,请使用上述选项之一。如果您是从头开始开发应用程序,请使用 Django 或其他设计用于在通用硬件上运行的框架。开发服务器仅用于:开发。

    【讨论】:

    • 开发服务器没有运行的另一个原因是它是单线程的。
    • @Adam 从技术上讲,生产服务器也是单线程的
    • 这有点让人毛骨悚然。我认为他的意思是开发服务器一次只能服务一个请求。
    • @Drew ..这就是生产服务器所做的,它可以一次处理一个请求(说一个实例)。
    • 当然可以,但是在生产环境中运行的应用可以通过许多实例处理许多请求。
    【解决方案2】:

    是的,有很多缺失的功能(并行队列、cron 作业、邮件、XMPP 等),一些隐藏的安全问题,性能和稳定性差,在技术上是可行的。 p>

    您可能已经猜到了,这是个坏主意

    以HTTP服务器为例;使用开发服务器,您将在生产环境中放入一个未记录的 BaseHTTPServer,这完全不可能配置,并且可能存在一些可被利用的隐藏安全漏洞。

    正如@Drew 所说,有更好的选择可以在非 GAE 的生产就绪环境中运行您的 Google App Engine 代码。

    【讨论】:

      【解决方案3】:

      虽然这是 2 年以上的旧帖子,但只需添加我的信息:http://www.jboss.org/capedwarf

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-10
        • 2023-03-21
        • 2018-01-07
        相关资源
        最近更新 更多