我有一个问题,我真的不知道从哪里开始解决.也许它会敲响某人的钟声.
TLDR: Django应用程序崩溃,重启后运行但无法导入某些模块.再次重启时,一切都很好.
整个故事:
不同的应用程序(我们现在最多三个)在不同的Python(2.5.x,2.6.x和2.6.x)和Django版本(分别为1.1.0,1.2.5和1.3.0)上偶尔会出现虚假的ImportErrors .例如,其中一个应用程序通过在其中抛出ImportError开始使每个请求失败:
from django.contrib.gis.maps.google import GMarker, GEvent
Run Code Online (Sandbox Code Playgroud)
我们收集了strace输出,相关的块在下面(为了简洁和保护有罪,绝对路径被DIR取代).
stat64("DIR/django/contrib/gis/maps/google/GMarker", 0xf699ce3c) = -1 ENOENT (No such file or directory)
open("DIR/django/contrib/gis/maps/google/GMarker.so", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("DIR/django/contrib/gis/maps/google/GMarkermodule.so", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("DIR/django/contrib/gis/maps/google/GMarker.py", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("DIR/django/contrib/gis/maps/google/GMarker.pyc", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
Run Code Online (Sandbox Code Playgroud)
(再一次是同样的事情s/GMarker/GEvent /)
重启过程后,一切运行顺利,同时运行:
python -c 'from django.contrib.gis.maps.google import GMarker'
Run Code Online (Sandbox Code Playgroud)
不产生任何错误.
GMarker和GEvent类实际上定义django.contrib.gis.maps.google.overlays并导入...maps/google/__init__.py:
from …Run Code Online (Sandbox Code Playgroud)