我正在使用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等)发生这种现象。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。