gpt4 book ai didi

Django 和 Channels 以及 ASGI 线程问题

转载 作者:行者123 更新时间:2023-12-03 12:46:42 41 4
gpt4 key购买 nike

我在使用 django 和 channel 时遇到问题(在 asgi 模式下)
当我设置 django channel 并使用 asgi 模式时,我的应用程序为每个 http 请求和我从 channel 发送的每条消息创建一个新线程

例如假设我的应用程序是一个简单的回声聊天服务器
当我运行我的服务器并请求以客户端身份连接到套接字时,线程增加了,而且当我再次向套接字发送内容时,每条消息都会增加线程。

你知道为什么吗?我该如何修复或限制它?

最佳答案

对于同步请求,Channels 创建了一个 ThreadPool。如果它在事件循环中运行 HTTP 请求,每个数据库查询和缓存命中都会锁定事件循环。

如果不设置环境变量ASGI_THREADS它使用由 concurrent.futures.ThreadPool 设置的默认值IMO 太高了,因为它是 CPU 内核数乘以 5。将 ASGI_THREADS 设置为较低的数字并使用多个 Daphne 进程。通过使用较少数量的线程和多个进程,您可以避免由 Python 的全局解释器锁引起的某些速度减慢。

关于Django 和 Channels 以及 ASGI 线程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52110761/

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