Skip to main content
 首页 » 编程设计

python之使用 uWSGI 时 Django 中内置 Python 函数的 NameError

2025年05月04日33kevingrace

我在带有 uWSGI (0.9.8) 的 Ubuntu 10.10(64 位)上运行 Django 1.3 + Python 2.6。 然而,偶尔我会在uwsgi.log中发现一些奇怪的日志,报告'getattr', 'isinstance' is not defined。但它们不是 Python 的内置函数吗?为什么 Django 找不到它们?这种情况在 uwsgi 服务器重启时流量低时不常发生,而在流量大且服务器运行一小会儿时经常出现。

我确定我的 Django 应用程序没有任何问题,但我不确定这是否是 Django、uWSGI 甚至 Python 2.6 中的错误。

更新:最新版本的 uWSGI 似乎没有这个了。

详细日志:

Error in sys.excepthook: 
 Traceback (most recent call last): 
   File "/usr/lib/python2.6/dist-packages/apport_python_hook.py", line 48,  in apport_excepthook 
     if not enabled(): 
   File "/usr/lib/python2.6/dist-packages/apport_python_hook.py", line 24,  in enabled 
     return re.search('^\s*enabled\s*=\s*0\s*$', conf, re.M) is None 
   File "/usr/lib/python2.6/re.py", line 142, in search 
     return _compile(pattern, flags).search(string) 
   File "/usr/lib/python2.6/re.py", line 236, in _compile 
     if isinstance(pattern, _pattern_type): 
 NameError: global name 'isinstance' is not defined 
 
 Original exception was: 
 Traceback (most recent call last): 
   File "/usr/local/lib/python2.6/dist- 
 packages/django/core/handlers/wsgi.py", line 258, in __call__ 
     set_script_prefix(base.get_script_name(environ)) 
   File "/usr/local/lib/python2.6/dist- 
 packages/django/core/handlers/base.py", line 239, in get_script_name 
     if settings.FORCE_SCRIPT_NAME is not None: 
   File "/usr/local/lib/python2.6/dist- 
 packages/django/utils/functional.py", line 277, in __getattr__ 
     return getattr(self._wrapped, name) 
 NameError: global name 'getattr' is not defined  Traceback (most recent call last): 
   File "/usr/local/lib/python2.6/dist- 
 packages/django/core/handlers/wsgi.py", line 258, in __call__ 
     set_script_prefix(base.get_script_name(environ)) 
   File "/usr/local/lib/python2.6/dist- 
 packages/django/core/handlers/base.py", line 252, in get_script_name 
     return force_unicode(environ.get('SCRIPT_NAME', u'')) 
   File "/usr/local/lib/python2.6/dist-packages/django/utils/encoding.py", 
 line 64, in force_unicode 
     if isinstance(s, unicode): 
 NameError: global name 'isinstance' is not defined  Error in sys.excepthook: 
 Traceback (most recent call last): 
   File "/usr/lib/python2.6/dist-packages/apport_python_hook.py", line 48,  in apport_excepthook 
     if not enabled(): 
   File "/usr/lib/python2.6/dist-packages/apport_python_hook.py", line 24,  in enabled 
     return re.search('^\s*enabled\s*=\s*0\s*$', conf, re.M) is None 
   File "/usr/lib/python2.6/re.py", line 142, in search 
     return _compile(pattern, flags).search(string) 
   File "/usr/lib/python2.6/re.py", line 236, in _compile 
     if isinstance(pattern, _pattern_type): 
 NameError: global name 'isinstance' is not defined 

请您参考如下方法:

你能试试最新的提示吗?它看起来像是一个应该在 0.9.9-dev 中修复的引用计数错误

如果您可以确认它解决了您的问题,我将发布仅应用此修复程序的更新版本。

非常感谢您的报告