因此,我们过去常常在生产环境中使用Apache运行我们的金字塔服务器。但是为了更简单的产品部署等,我们正在转向Docker containerization,我们希望坚持“每个容器一个进程”的理念,而不是在容器中运行Apache +4个..so进程,我们只需要1个python进程。
所以我的问题是-有没有一种方法可以直接在生产环境中运行一台金字塔服务器?而不使用WSGI+Apache?
我的理解是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()以上是否可以作为生产级服务器使用?
发布于 2019-09-12 03:24:01
最新的官方推荐是每个容器一个关注点。来自Docker docs (强调我自己的):
每个容器应该只有一个关注点。将应用程序解耦到多个容器中,可以更容易地水平扩展和重用容器。例如,web应用程序堆栈可能由三个单独的容器组成,每个容器都有自己的唯一图像,以解耦的方式管理web应用程序、数据库和内存缓存。
将每个容器限制为一个进程是一个很好的经验法则,但这并不是一个硬性的规则。例如,容器不仅可以由一个初始化进程产生,而且一些程序可能会自动产生额外的进程。例如,可以派生多个工作进程,而Apache可以为每个请求创建一个进程。
在您的案例中,您的web应用程序服务器是一个单独的关注点。运行Apache+WSGI完全没问题。不要担心进程--这是Apache的工作。
为了更好地理解“一个关注点”规则,this post很好地概述了它试图解决的问题。
发布于 2019-09-12 07:18:49
您可以使用Waitress,根据他们的文档,它是
...意味着它是一个产品级质量的纯Python WSGI服务器,具有非常可接受的性能。除了存在于Python标准库中的依赖项外,它没有任何依赖项。
女服务员是塔架项目的一部分,就像金字塔一样。
发布于 2019-09-13 02:22:07
当直接运行Python时,Bjoern看起来是一个可靠的选择,其中Python服务器具有WSGI绑定:
https://www.appdynamics.com/blog/engineering/a-performance-analysis-of-python-wsgi-servers-part-2/
https://stackoverflow.com/questions/57894461
复制相似问题