gpt4 book ai didi

Python:从开发服务器迁移到生产服务器

转载 作者:太空宇宙 更新时间:2023-11-03 19:17:19 25 4
gpt4 key购买 nike

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

现在,当投入生产时,我想迁移到多线程生产服务器,并且有很多选择。假设我选择 CherryPy。

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

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

由于标准库 wsgiref 是一个单线程服务器,并且我只创建一个 wsgi 应用程序(wsgi 可调用),因此一切正常。

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

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

  • 我与 memcached、mongoDB 等的连接是否可以跨线程共享。线程之间还会共享什么内容

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

最佳答案

一般来说,您的应用程序使用 wsgi 兼容框架,您不应该害怕多线程/单线程服务器端。它应该透明地工作,并且无论它是什么类型的服务器,只要它符合 wsgi 兼容,就必须以相同的方式使用react。

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

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

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

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

关于Python:从开发服务器迁移到生产服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10948636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com