gpt4 book ai didi

python - Django:如何获得与数据库的新连接

转载 作者:行者123 更新时间:2023-11-28 23:11:48 25 4
gpt4 key购买 nike

我用 django 构建了一个网络服务器。

并使用线程运行任务,将客户端发送的数据保存到数据库。

  while True:
...
try:
self.dbTarget, created = ClientMonitor.objects.get_or_create(Machine_code=own_MachC)

data = self.workQueue.get() #from client sent

self.dbTarget.setValue(data) #Custom method assigning
self.dbTarget.save() #django ORM
except InterfaceError as ee:
pass

该线程是长时间运行的,但由于mysql服务器断开连接为8小时超时,长时间运行后会出现InterfaceError。

Especially it can not auto-reconnect to the db. Creating a new thread will be OK, but it will increase resource occupation.

所以我想在同一线程中关闭连接时重新连接数据库。此外,Django 的每个请求都会获得一个新的连接。

如何在同一个线程中获得与数据库的新连接?谢谢!!!

最佳答案

Django 本身使用函数close_old_connections()在每个请求的开始和结束时关闭任何超过其生命周期的连接。这会检测连接是否早于数据库设置中指定的 MAX_AGE,或者是否不可用。如果您将 MAX_AGE 设置为低于数据库的超时,则您永远不会遇到由于数据库超时而导致的 InterfaceError

from django.db import close_old_connections

while True:
try:
...
finally:
close_old_connections()

关于python - Django:如何获得与数据库的新连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45672334/

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