gpt4 book ai didi

python django wsgi 多线程 - 如何在 django 中使用多线程

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

我有一个 django 应用程序,我在其中使用 python Thread 模块来执行多线程,它在通过 manage.py 使用 django 开发服务器时工作正常。但是当我在 apache - mod_wsgi 上部署时,它不工作。join 失败并且线程不工作。任何人都可以帮助进行准确的 apache 配置吗?

我尝试保留一些多线程和多进程配置,如下所示。但仍然没有工作。我的配置 -听8000

Alias /static/ /usr/td/static/
<Directory /usr/td/static/>
Require all granted
</Directory>

<Directory /usr/td>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess td display-name=myproject processes=10 threads=255 python-path=/usr/td/:/usr/lib/python2.7/site-packages
WSGIProcessGroup td
WSGIScriptAlias / /usr/td/td/wsgi.py

最佳答案

mod_wsgi 中没有任何东西可以阻止您使用线程,尽管在 Web 应用程序进程中运行后台任务通常不是一个好主意。根据您的工作,您应该使用单独的任务队列系统,例如 Celery。

一件事表明您走错了方向,那就是您设置了 threads=255。这是接受请求的并发线程数。设置如此高的数字几乎总是一个非常糟糕的主意。

现在,您已经为 2550 个线程的所有 mod_wsgi 守护进程设置了一个请求线程池大小,这比 Apache 本身甚至可以代理的还要多。所以这只是一种永远不会被使用的内存浪费。

即使是 25 个线程也会被认为是高线程,如果进程正在执行高 CPU 任务,您绝对不想使用大量线程,因为 Python 的线程模型和 GIL 不实用。

为什么要使用如此多的线程?该数字与您可能自己创建的任何后台线程无关,它仅表示 Web 请求处理程序线程的数量。

建议您实际展示一些您尝试运行的实际线程代码。 Apache/mod_wsgi 配置确实与它无关。

关于python django wsgi 多线程 - 如何在 django 中使用多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45913194/

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