开发者社区> 问答> 正文

Django应用在发生异常后一直崩溃,直到重新启动

我正在使用Django + uWSGI + nginx服务应用程序。来自前端的所有请求均为发布请求。

行为: 在下面的代码片段中,函数convert_data连接到数据库并将请求转换为resp。

class ConvertDataView(View): def post(self, *args, **kwargs): request = json.loads(args[0].body.decode()) resp = api_utils.convert_data(request) if resp: return JsonResponse(resp, safe=False) return JsonResponse({}, status=404) 当输入中包含无效字符(例如\,',“等)时,convert_data会引发异常。此异常因数据库而异,但形式为“查询无效”。

问题: 即使输入正确且其中不包含任何无效字符,对此核心/线程的所有后续查询也会继续失败。此行为导致应用程序不稳定,并在请求转到另一个核心/线程时提供信息,但在涉及到此“损坏的核心/线程”时失败。

该错误将继续存在,直到重新启动uwsgi服务器为止。uwsgi服务器重新启动后,该应用程序再次恢复正常。

似乎有效的方法: 如果我在ConvertDataView中执行异常处理,则似乎仍然存在此问题。但是,似乎如果我在convert_data中执行异常处理并始终发送回有效响应而不是引发错误,则不会发生此错误。

我尝试过的事情:

最初,我认为该错误可能是由于Teradata崩溃造成的。但是,我将convert_data连接到其他数据库仍然发生。 然后我想也许python正在重用相同的数据库驱动程序。但是查看驱动程序对象的存储位置将显示不同的存储位置。这意味着将创建一个新的数据库对象,这是预期的行为。 我尝试用Django的开发服务器替换uwsgi。但是在这种情况下,直到服务器重新启动,响应似乎总是被破坏。 我不知道是否会针对与数据库无关的错误(例如KeyError,IndexError等)发生这种现象。

展开
收起
被纵养的懒猫 2019-09-24 13:21:31 896 0
0 条回答
写回答
取消 提交回答
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载