uWSGI call randomly injected into Python call stack?(UWSGI调用随机注入到Python调用堆栈?)
本文介绍了UWSGI调用随机注入到Python调用堆栈?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正试图找出一个奇怪的错误(see here)--基本上我看到意外的数据库断开。为了进行调查,我在Django中的断开代码中添加了调用堆栈转储-现在我比以往任何时候都更困惑...
我在调用堆栈中看到的是一个完全出乎意料的调用序列,例如:
...
File "/deployment/v_env/lib/python3.8/site-packages/qrcode/base.py", line 326, in __mod__
for item, other_item in zip(self, other)]
File "/deployment/v_env/lib/python3.8/site-packages/qrcode/base.py", line 303, in __iter__
return iter(self.num)
File "/deployment/v_env/lib/python3.8/site-packages/django/http/response.py", line 292, in close
signals.request_finished.send(sender=self._handler_class)
File "/deployment/v_env/lib/python3.8/site-packages/django/dispatch/dispatcher.py", line 180, in send
return [
...
这里,我使用的二维码库突然跳转到HttpResponse.lose()。另一个:
...
File "/deployment/v_env/lib/python3.8/site-packages/django/db/models/query.py", line 1268, in _insert
query = sql.InsertQuery(self.model, ignore_conflicts=ignore_conflicts)
File "/deployment/v_env/lib/python3.8/site-packages/django/db/models/sql/subqueries.py", line 141, in __init__
super().__init__(*args, **kwargs)
File "/deployment/v_env/lib/python3.8/site-packages/django/http/response.py", line 292, in close
signals.request_finished.send(sender=self._handler_class)
File "/deployment/v_env/lib/python3.8/site-packages/django/dispatch/dispatcher.py", line 180, in send
return [
...
此处一些Django DB查询代码突然跳到HttpResponse.Close()。
此调用堆栈不可能是正确的-紧靠在Close()之上的代码不会调用该代码,也不会调用可能以某种方式绑定到错误对象的Close()方法。
现在,uWSGI可以从C运行时调用HttpResponse.Close()--我唯一能理解的是,这是在处理请求的过程中发生的,并且以某种方式出现在调用堆栈中。
所以我的问题是,情况真的会是这样吗?对Python的C调用真的像这样跳到调用堆栈中吗?还是uWSGI未能正确保护对Python的调用?我知道GIL必须在调用任何PYTHON之前获得--也许这不会发生。或者可能traceback.print_stack()
没有正确处理来自C的调用?
指定的任何洞察力。
推荐答案
再想一想,我认为这种对调用堆栈的注入是正确的。除此之外,它还能有什么用呢?GIL可以在任何时候获得,而Python不会在每次调用时启动一个新的解释器,因此它只能在当前上下文中运行。
这篇关于UWSGI调用随机注入到Python调用堆栈?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:UWSGI调用随机注入到Python调用堆栈?


基础教程推荐
猜你喜欢
- 包装空间模型 2022-01-01
- 求两个直方图的卷积 2022-01-01
- 使用大型矩阵时禁止 Pycharm 输出中的自动换行符 2022-01-01
- PANDA VALUE_COUNTS包含GROUP BY之前的所有值 2022-01-01
- 在同一图形上绘制Bokeh的烛台和音量条 2022-01-01
- Plotly:如何设置绘图图形的样式,使其不显示缺失日期的间隙? 2022-01-01
- PermissionError: pip 从 8.1.1 升级到 8.1.2 2022-01-01
- 无法导入 Pytorch [WinError 126] 找不到指定的模块 2022-01-01
- 修改列表中的数据帧不起作用 2022-01-01
- 在Python中从Azure BLOB存储中读取文件 2022-01-01