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

python django wsgi multithread - how to use multithread in django

我有一个 Django 应用程序,我在其中使用 python 线程模块来执行多线程,它在通过 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。这是接受请求的并发线程数。设置如此高的数字几乎总是一个非常糟糕的主意。

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

即使是 25 个线程也会被认为是高线程,如果进程正在执行高 CPU 任务作为 [=26 的线程模型和 GIL,您绝对不想使用大量线程=]不要让它变得实用。

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

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