【问题标题】:Run Python Pyramid server in production w/o Apache在不使用 Apache 的生产环境中运行 Python Pyramid 服务器
【发布时间】:2019-09-13 02:22:06
【问题描述】:

所以我们过去常常在生产环境中使用 Apache 运行 Pyramid 服务器。但是我们正在转向 Docker 容器化,以便更轻松地部署产品等,并且我们希望坚持“每个容器一个进程”的理念......所以我们只需要 1 个 python proc,而不是在容器中运行 Apache + 4 个 python proc。

所以我的问题是 - 有没有办法直接在生产环境中运行 Pyramid 服务器?不用WSGI+Apache?

https://www.digitalocean.com/community/tutorials/how-to-use-the-pyramid-framework-to-build-your-python-web-app-on-ubuntu

我的理解是 pserve 仅用于开发?

创建一个application.py 文件并填写以下内容:

from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.response import Response

def hello_world(request):
    return Response('<h1>Hello world!</h1>')

if __name__ == '__main__':
    config = Configurator()
    config.add_view(hello_world)
    app = config.make_wsgi_app()
    server = make_server('0.0.0.0', 8080, app)
    server.serve_forever()

以上是否可以作为生产级服务器使用?

【问题讨论】:

  • 社区在Pyramid Community Cookbook中提供了很多部署示例。 Pyramid 与您在前端使用的 Web 服务器无关。也更正确地说,“金字塔服务器”不是一个东西。 “金字塔应用”是一个东西。您可能认为“pserve”中的“p”代表 Pyramid,但它代表 Paste。请参阅pserve 上的文档。
  • @StevePiercy 谢谢,所以问题试图解决 - 我们的目标是运行一个 python 进程......所以金字塔有 api 绑定等,我们想启动一个 python 服务器而不是“in前面”,而是作为单个 python 进程。现在好像有“本机 python 服务器”可用,而过去更常见的是在 python 前面使用 apache 或 nginx。
  • @StevePiercy 我更新了 OP..您是否碰巧知道 (a) 这是否代表生产级服务器以及 (b) 它是否将所有内容作为单个进程运行?还是会将金字塔应用程序作为子进程启动?

标签: python apache pyramid wsgi amazon-ecs


【解决方案1】:

最新的官方建议是每个容器一个问题。来自Docker docs(强调我自己的):

每个容器应该只有一个关注点。 解耦应用程序 到多个容器中更容易水平扩展和 重复使用容器。例如,一个 Web 应用程序堆栈可能包含 三个独立的容器,每个容器都有自己独特的图像, 管理 Web 应用程序、数据库和内存中的缓存 解耦方式。

将每个容器限制为一个进程是一个很好的经验法则,但它 不是硬性规定。 例如,容器不仅可以 通过初始化进程产生,某些程序可能会产生额外的 自己的过程。 例如,Celery 可以生成多个 工作进程,Apache 可以为每个请求创建一个进程。

在您的情况下,您的 Web 应用程序服务器是一个问题。运行 Apache+WSGI 完全没问题。不用担心流程——这是 Apache 的工作。

为了更好地理解“一个关注点”规则,this post 很好地概述了它试图解决的问题。

【讨论】:

【解决方案2】:

您可以使用Waitress,根据他们的文档,它是

... 是一个生产质量的纯 Python WSGI 服务器,具有非常 可接受的性能。它没有依赖项,除了那些活的 在 Python 标准库中。

Waitress 是 Pylons 项目的一部分,就像 Pyramid 一样。

【讨论】:

【解决方案3】:

看起来 Bjoern 是直接运行 Python 的可靠选择,其中 Python 服务器具有 WSGI 绑定:

https://www.appdynamics.com/blog/engineering/a-performance-analysis-of-python-wsgi-servers-part-2/

https://github.com/jonashaag/bjoern

【讨论】:

    猜你喜欢
    • 2019-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    • 2020-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多