因此,我们曾经在生产环境中使用Apache运行Pyramid服务器。但是我们正在转向Docker容器化,以便更轻松地进行产品部署等,并且我们希望坚持“每个容器一个进程”的理念。.因此,我们只希望使用1个python proc,而不是在容器中运行Apache + 4个python proc。
所以我的问题是-有没有一种方法可以直接在生产环境中运行Pyramid服务器?不使用WSGI + Apache吗?
我的理解是,保留只是为了发展吗?
创建一个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()
以上内容可以用作生产级服务器吗?
答案 0 :(得分:1)
最新的官方建议是每个集装箱一个问题。在Docker docs中(强调我自己):
每个容器应该只关注一个问题。分离应用程序 放入多个容器中,可以更轻松地水平缩放 重用容器。例如,Web应用程序堆栈可能包含 三个独立的容器,每个容器都有自己的独特图片, 管理Web应用程序,数据库和内存中的缓存 解耦的方式。
将每个容器限制为一个进程是一个很好的经验法则,但是 这不是硬性规定。例如,不仅容器可以 通过初始化进程生成,某些程序可能生成其他程序 自行处理。 例如,芹菜可以产生多个 工作进程,Apache可以为每个请求创建一个进程。
在您的情况下,您的Web应用程序服务器只是一个问题。运行Apache + WSGI完全可以。不用担心流程-那是Apache的工作。
为了更好地理解“一个关注”规则,this post很好地概述了其试图解决的问题。
答案 1 :(得分:0)
您可以使用Waitress,根据他们的文档,它是
...意味着要成为具有生产质量的纯Python WSGI服务器, 可接受的性能。除了存在的依赖项之外,它没有任何依赖项 在Python标准库中。
女服务生就像金字塔一样,是Pylons Project的一部分。
答案 2 :(得分:0)
当直接运行Python时,Bjoern似乎是一个不错的选择,因为Python服务器具有WSGI绑定:
https://www.appdynamics.com/blog/engineering/a-performance-analysis-of-python-wsgi-servers-part-2/