Python 在 nginx 中每次请求后对象都会丢失状态
Python objects lose state after every request in nginx
这对我来说真的很麻烦。我有一个在 django 和 python 2.7 中运行的电报机器人。在开发过程中,我使用了 django sslserver 并且一切正常。今天,我在 nginx 中使用 gunicorn 部署了它,代码的工作方式与在本地主机上的工作方式大不相同。自从我已经开始吸引用户以来,我尽了一切努力,但都无济于事。在我看来,大多数 python 对象在每次请求后都会丢失其状态,这可能是导致问题的原因。我使用的库有一个 class 处理与电报用户的对话,对话的状态存储在 class 实例中。有时,当新请求到来时,这些值可能已经丢失。请问有人遇到过吗?有没有办法快速解决问题?我的情况很危急,需要一个快速的解决方案
Gunicorn 有一个 preforking worker 模型——这意味着它会启动几个独立的子进程,每个子进程负责处理负载的一个子集。
如果您依赖内部应用程序状态在提供您的服务所涉及的所有线程中保持一致,您需要将工作线程数降低到 1,以确保所有这些线程都在同一个进程中.
当然,这是一个权宜之计——如果您希望能够在生产负载上将您的解决方案扩展到 运行,或者有多个服务器支持您的应用程序,那么您需要修改您的系统将相关状态保存到共享存储,而不是依赖进程中可用的内容。
这对我来说真的很麻烦。我有一个在 django 和 python 2.7 中运行的电报机器人。在开发过程中,我使用了 django sslserver 并且一切正常。今天,我在 nginx 中使用 gunicorn 部署了它,代码的工作方式与在本地主机上的工作方式大不相同。自从我已经开始吸引用户以来,我尽了一切努力,但都无济于事。在我看来,大多数 python 对象在每次请求后都会丢失其状态,这可能是导致问题的原因。我使用的库有一个 class 处理与电报用户的对话,对话的状态存储在 class 实例中。有时,当新请求到来时,这些值可能已经丢失。请问有人遇到过吗?有没有办法快速解决问题?我的情况很危急,需要一个快速的解决方案
Gunicorn 有一个 preforking worker 模型——这意味着它会启动几个独立的子进程,每个子进程负责处理负载的一个子集。
如果您依赖内部应用程序状态在提供您的服务所涉及的所有线程中保持一致,您需要将工作线程数降低到 1,以确保所有这些线程都在同一个进程中.
当然,这是一个权宜之计——如果您希望能够在生产负载上将您的解决方案扩展到 运行,或者有多个服务器支持您的应用程序,那么您需要修改您的系统将相关状态保存到共享存储,而不是依赖进程中可用的内容。