我正在开发一个Python脚本(在脚本之后),它在大型日志文件中搜索搜索字符串。在正常使用中,它是从哈德森前端调用的。
关于Hudson界面:
Hudson作业在连接的虚拟机(VM)上创建临时批处理文件,该虚拟机调用脚本并向其传递一些参数。我们使用此设置已经有数百个成功的实例,但现在出现了一些错误。
关于剧本
日志文件包含在许多压缩的 .tgz 文件中。我的脚本搜索每个 .tgz 文件中的每个日志
我的脚本接受的命令行参数之一是名为 PROCESS_IN_PARALLEL 的 True / False 参数。如果 PROCESS_IN_PARALLEL 设置为 True ,则会在其自己的线程中搜索每个 .tgz 文件(使用多处理模块)。如果 PROCESS_IN_PARALLEL 设置为 False ,则会按顺序搜索每个 .tgz 文件(使用循环)。
什么有效:
什么行不通:
如果我使用Hudson来调用我的脚本, PROCESS_IN_PARALLEL 设置为 True ,那么我会收到一个奇怪的错误。这是追溯:
Traceback (most recent call last):
File "F:\Scripts\Parse_LogFiles_Archive\parseLogs_Archive_8-19-13.py", line 40, in main
searchHits = searchTarList(searchDir, newDirectory, argv)
File "F:\Scripts\Parse_LogFiles_Archive\parseLogs_Archive_8-19-13.py", line 163, in searchTarList
hits = processPool.map(searchTar, tarMap)
File "E:\Python27\lib\multiprocessing\pool.py", line 225, in map
return self.map_async(func, iterable, chunksize).get()
File "E:\Python27\lib\multiprocessing\pool.py", line 522, in get
raise self._value IOError: [Errno 9] Bad file descriptor
根据我的研究,当Python尝试读取以写入模式打开的文件时会发生此错误。
我的问题:
有没有一个天才知道Python和哈德森都知道发生了什么?