【发布时间】:2020-06-15 01:36:21
【问题描述】:
所以我们的 python 程序遇到了这些错误_mysql_exceptions.OperationalError: (2006, 'MySQL server has gone away')。问题是程序访问数据库,在mysql connection timeout ...之后做了很多爬取返回结果,然后为时已晚。
按逻辑有两种解决方案
- 增加
mysql connection timeout但这不是选项 - 让 python 检查打开的连接,如果关闭则重新打开它
已经找到了一些解决方案并且听起来很清楚possible solution 和这里about closing and opening cursors。
但是我们使用来自 django 的模型 .. 我不知道在哪里实现 check for a connection and reconnect of the connectin is lost 检查的逻辑。
问题:在使用模型时,我可以在哪里以及如何实现所描述的逻辑以重新连接到丢失的数据库连接? (是否有某种 INIT 或 CONNECT 事件可供访问)
示例代码
from django.db import models
class Domain(models.Model):
name = models.CharField(max_length=100)
domain = models.CharField(max_length=100, blank=True, null=True)
【问题讨论】:
-
你爬得怎么样?您是否将其作为视图的一部分运行并等待该视图返回,或者以其他方式使用消息队列将任务置于后台,或者可能向诸如 scrapyd 之类的东西发出 RPC?
标签: python python-3.x mysql-python