Django:线程池和 TooManyConnections
Posted
技术标签:
【中文标题】Django:线程池和 TooManyConnections【英文标题】:Django: ThreadPool and TooManyConnections 【发布时间】:2020-10-20 13:17:39 【问题描述】:上下文:Django(3) 命令、mysql
from django.db import connections
...
def func1(a):
with connections['second_db'].cursor() as cursor:
cursor.execute(statement)
def func2(b):
with connections['second_db'].cursor() as cursor:
cursor.execute(statement)
for ...:
pool = ThreadPool(processes=2)
result1_proc = pool.apply_async(func1, args=(a))
result2_proc = pool.apply_async(func2, args=(b))
pool.close()
pool.join()
有时我会从服务器收到“连接太多”错误。 如果我在每个函数的末尾添加“connections['second_db'].close()”,我会得到“django.db.utils.InterfaceError: (0, '')”。 怎么了?
【问题讨论】:
【参考方案1】:Too many connections
是 MySQL 错误,而不是 django 错误。
您可以更新参数:
# vi /etc/my.cnf
max_connections = 512
参考:https://www.thegeekdiary.com/mysql-error-too-many-connections-and-how-to-resolve-it/
【讨论】:
我想解决问题,而不是解决症状。线程死亡时不应该关闭连接吗? 我在您的样本中看到了“for”,确实,要分析根本原因。我看到了这个(你可能也看到了)***.com/questions/5504340/…:似乎需要关闭游标......你在每个 cursor.execute() 之后尝试过 "cursor.close()" 吗?以上是关于Django:线程池和 TooManyConnections的主要内容,如果未能解决你的问题,请参考以下文章