2

我有一个系统,它作为工作人员不断运行各种 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

在此先感谢 - 这一直把我逼疯了。

4

0 回答 0