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配置确实与它无关。
我有一个 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配置确实与它无关。