我有一个系统,它作为工作人员不断运行各种 python 脚本——它们在退出时重新启动,导致每个脚本每天运行大约数百次。一切都很好,除了每隔几天它们中的一个会随机崩溃并出现以下错误
XXX ambiguity!\nXXX ambiguity!\nXXX ambiguity!\nXXX ambiguity!\n...
XXX ambiguity!\nXXX ambiguity!\nXXX ambiguity!\nXXX ambiguity!\n...
Error processing line 1 of /usr/lib/python2.7/dist-packages/zope.interface-3.6.1-nspkg.pth:
Traceback (most recent call last):
File \"/usr/lib/python2.7/site.py\", line 157, in addpackage
exec line
File \"<string>\", line 1
import sys,types,os; p = os.path.join(sys._getframe(1).f_locals['sitedir'], *('zope',)); ie = os.path.exists(os.path.join(p,'__init__.py')); m = not ie and sys.modules.setdefault('zope',types.ModuleType('zope')); mp = (m or []) and m.__dict__.setdefault('__path__',[]); (p not in mp) and mp.append(p)
SyntaxError: unexpected EOF while parsing
Remainder of file ignored
XXX ambiguity!\nXXX ambiguity!\nXXX ambiguity!\nXXX ambiguity!\n...
MemoryError
抱歉,如果我修改了跟踪,我的日志记录会对它造成丑陋的影响。另外,请注意我已经截断了这些XXX
行:XXX ambiguity!\n
实际上可能重复了一百次。
我不在我自己的代码中使用zope.interface
任何地方:它是作为 tornado 的依赖项安装的,更具体地说tornado.twisted
,我也不使用它。不过,我倾向于认为问题出在 python 上(或者我如何使用它来执行我的脚本),而指向手指的堆栈zope.interface
只是一个症状。
脚本本身使用 运行/usr/bin/nice
,通常采用以下形式
#!/usr/bin/env python
from sharedlib import queue
import time
import logging
logger = logging.getLogger(__name__)
def main():
for item in queue.rest: # queue.rest yields from an immutable source
logger.info("An item in the queue: %s", item)
if __name__ == '__main__':
main()
time.sleep(600) # Used for throttling the rate of script execution
在此先感谢 - 这一直把我逼疯了。