Python:从dev服务器迁移到生产服务器

2024-05-18 06:52:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用bottlepy框架开发一个应用程序。我使用标准库WSGIRefServer()来运行开发服务器。它是一个单线程服务器。在

现在进入生产阶段时,我想转移到多线程的生产服务器,有很多选择。假设我选择了樱桃皮。在

现在,在我的代码中,我正在初始化一个wsgi应用程序。除此之外,我还在初始化其他东西。。。在

  • Memcached连接
  • Mako模板
  • MongoDB连接

由于标准库wsgiref是一个单线程服务器,而我只创建了一个wsgi应用程序(wsgi callable),所以一切正常。在

我想知道的是,当我移动到多线程服务器时,我的wsgi应用程序、初始化代码、到不同服务器的连接等将如何运行。在

  • 多线程服务器将为每个线程创建一个单独的wsgi应用实例。对于每个新请求是否会生成一个新线程(这意味着每个请求都有一个新的wsgi应用程序)?

  • 我与memcached、mongoDB等的连接是否可以跨线程共享。线程之间将共享

  • 请解释线程服务器的请求-响应周期


Tags: 代码服务器框架模板应用程序wsgi标准mongodb
1条回答
网友
1楼 · 发布于 2024-05-18 06:52:41

一般来说,您的应用程序使用的是wsgi兼容框架,您不应该害怕多线程/单线程服务器端。它的工作方式是透明的,不管它是哪种服务器,只要它符合wsgi,就必须以相同的方式做出反应。在

bottle.run()之前的每个代码块将只运行一次。因此,每个连接(数据库、memcached)将只实例化一次并共享。在

当您调用bottle.run()时,bottlepy会为您启动wsgi服务器。对该服务器的每个请求都会在bottlepy框架内触发一些wsgi调用。如果它是单线程或多线程环境,您并不真正感兴趣,只要您不做一些奇怪的事情。在

奇怪的是,我的意思是通过全局变量同步某些东西。(这里的例外是全局request对象,对于这个对象,bottlepy确保它在适当的上下文中包含正确的请求)。在

为了回答列表中的第一个问题:请求可以在新生成的线程中计算,也可以从线程池中计算(CherryPy是线程池)

相关问题 更多 >