gpt4 book ai didi

python - 如何设置 WSGI 服务器以类似于 Apache 的方式运行?

转载 作者:太空宇宙 更新时间:2023-11-04 10:51:23 27 4
gpt4 key购买 nike

我来自 PHP/Apache 世界,在那里运行应用程序非常容易。每当 PHP 应用程序崩溃时,运行该请求的 Apache 进程将停止,但服务器仍会愉快地崩溃并响应其他客户端。有没有办法让 Python 应用程序以类似的方式工作。我将如何设置像 TornadoCherryPy 这样的 wsgi 服务器,以便它能以类似的方式工作?另外,我如何从一台具有不同域的服务器运行多个应用程序?

最佳答案

对于 WSGI 服务器,您所追求的可能无论如何都会发生。这是因为任何 Python 异常只会影响当前请求,框架或 WSGI 服务器会捕获异常,将其记录下来并将其转换为 HTTP 500 状态页面。该应用程序仍将在内存中,并将继续处理 future 的请求。

我们深入了解“使 Apache 进程崩溃”的确切含义。

您的代码很少会崩溃,因为整个过程会因核心转储而导致进程完全退出。因此,您是否对将应用程序语言级错误等同于整个进程崩溃的术语感到困惑。

即使您确实找到了使进程崩溃的方法,Apache/mod_wsgi 也能正常处理并且进程将被替换。 Gunicorn WSGI 服务器也会这样做。 CherryPy 不会,除非你有一个正在运行的进程管理器来监视它并且进程监视器重新启动它。单进程模式下的 Tornado 也会有同样的问题。使用 Tornado 作为 Gunicorn 中的 worker 是解决这个问题的一种方法,而且我相信 Tornado 本身现在可能有一些进程管理器来运行多个进程,这允许它在进程挂掉时重新启动进程。

请注意,如果导致 Python 异常的应用程序错误足够严重并且破坏了进程中的状态,则后续请求可能会出现问题。这是与 PHP 的一个区别。使用 PHP,在任何请求之后,无论成功与否,应用程序都会被有效地丢弃并且不会持续存在。所以错误代码不会影响后续请求。在 Python 中,由于加载代码和保留状态的进程在请求之间保持不变,因此从技术上讲,您可能会处于必须重新启动进程才能修复它的状态。我不知道有哪个 WSGI 服务器具有在一个请求返回错误响应时自动重启进程的机制。

关于python - 如何设置 WSGI 服务器以类似于 Apache 的方式运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13619021/

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