Django是否使用进程或线程来处理视图中的用户请求?

Ser*_*hko 11 django

Django是否使用进程或线程来处理视图中的用户请求?

如果Django使用线程我不能使用所有CPU核心(python全局解释器锁),如果Django使用进程我不能无需担心共享内存.

我试图在谷歌中找到信息,但我设法找到的最大值是django使用线程来处理请求吗?这似乎不是一个答案.

knb*_*nbk 11

Django作为WSGI应用程序运行.如何发生这种情况取决于您的WSGI服务器(例如uWSGI,Gunicorn,mod_wsgi).

Django的请求处理程序是线程安全的.您可以将WSGI服务器配置为使用任意数量的进程(有时称为工作程序)和每个进程的线程.

正如您所提到的,进程使用更多内存,但线程受GIL的影响.一个好的配置应该在进程数和每个进程的线程数之间找到平衡.

  • @SeregaLuchko也许您正在寻找像[Celery](http://www.celeryproject.org/)这样的任务队列? (2认同)
  • 正如已经建议的那样,如果尝试卸载请求触发的任务,那么请查看排队系统,例如Celery.有关进程/线程如何在WSGI服务器(如mod_wsgi)中工作的一般性讨论,请参阅http://modwsgi.readthedocs.io/en/develop/user-guides/processes-and-threading.html (2认同)