首页 > 解决方案 > 在不使用 Apache 的生产环境中运行 Python Pyramid 服务器

问题描述

所以我们过去常常在生产环境中使用 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()

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

标签: pythonapachepyramidwsgiamazon-ecs

解决方案


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

每个容器应该只有一个关注点。将应用程序解耦到多个容器中,可以更轻松地水平扩展和重用容器。例如,一个 Web 应用程序堆栈可能由三个独立的容器组成,每个容器都有自己独特的图像,以分离的方式管理 Web 应用程序、数据库和内存缓存。

将每个容器限制为一个进程是一个很好的经验法则,但这不是一个硬性规定。例如,不仅容器可以使用 init 进程生成,某些程序可能会自行生成其他进程。例如,Celery 可以产生多个工作进程,而 Apache 可以为每个请求创建一个进程。

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

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


推荐阅读