docker环境下开启后很快无响应
jin38324 opened this issue · comments
基于本仓库中的代码重新build了docker镜像
服务可以顺利启动,并且可以正常使用一段时间,但是很快(大概3分钟)就会无响应,包括主页都没有响应。
奇怪的是如果是挂载本地app文件夹中的代码启动docker就不会出现这种情况,docker以非后台模式启动也没有出现这种情况。
停滞时,日志总是卡在
INFO 时间戳 - app.api.v2.endpoints.sgtv:call - 第x次尝试获取1
200
然后就不会更新任何活动。
只能重启才能恢复正常。
找不到出错原因。
配置文件中localhost =输入你的ip,具体看教程给出的相关信息https://www.cnblogs.com/1314h/p/16651157.html
线程阻塞引起的问题,下一版更新,可以使用channel2等其他接口
现在已经定位到是app.db.dbMysql:is_connected
出现问题。
我想请教一下,一开始选择mysql来缓存视频数据的考虑是什么?
mysql实际上只有video表的一组数据,如果把视频存成本地文件,不用数据库,用文件名来检索,对应用会有什么影响?
一开始设计时考虑过存到本地,但是有很多弊端(比如数据共享问题)
如果你愿意的话欢迎PR
dbmysql第32行代码 :
# 通过以下两个方法判断mysql是否连通,以及重连。
def is_connected(self, num=3600, stime=3):
# num = 28800
_number = 0
_status = True
while _status and _number <= num:
"""Check if the server is alive"""
try:
self.connection.ping(reconnect=True) # ping 校验连接是否异常
_status = False
except:
if self.re_connect(): # 重新连接,成功退出
_status = False
break
_number += 1
logger.info(f"mysql连接失败,正在第{_number}次重连...")
time.sleep(stime) # 连接不成功,休眠3秒钟,继续循环,知道成功或重试次数结束
你把上面代码段替换为上面的运行查看日志看看,应该是一直重连数据库导致的阻塞
已经这样试过了。第一次ping就会阻塞,没有进入循环。
# 通过以下两个方法判断mysql是否连通,以及重连。
def is_connected(self, num=3600, stime=3):
# num = 28800
_number = 0
_status = True
while _status and _number <= num:
"""Check if the server is alive"""
try:
logger.info("mysql 开始检查连接")
self.connection.ping(reconnect=True) # ping 校验连接是否异常
_status = False
logger.success("mysql 连接检查成功")
except:
if self.re_connect(): # 重新连接,成功退出
_status = False
logger.success("mysql重新连接成功")
break
logger.warning("mysql重新连接失败:"+str(_number))
_number += 1
time.sleep(stime) # 连接不成功,休眠3秒钟,继续循环,知道成功或重试次数结束
问题已修复