Hudson用我的Python脚本做什么?

时间:2013-08-19 22:51:00

标签: python hudson

我正在开发一个Python脚本(在脚本之后),它在大型日志文件中搜索搜索字符串。在正常使用中,它是从哈德森前端调用的。

关于Hudson界面:
Hudson作业在连接的虚拟机(VM)上创建临时批处理文件,该虚拟机调用脚本并向其传递一些参数。我们使用此设置已经有数百个成功的实例,但现在出现了一些错误。

关于剧本
日志文件包含在许多压缩的 .tgz 文件中。我的脚本搜索每个 .tgz 文件中的每个日志 我的脚本接受的命令行参数之一是名为 PROCESS_IN_PARALLEL True / False 参数。如果 PROCESS_IN_PARALLEL 设置为 True ,则会在其自己的线程中搜索每个 .tgz 文件(使用多处理模块)。如果 PROCESS_IN_PARALLEL 设置为 False ,则会按顺序搜索每个 .tgz 文件(使用循环)。

什么有效:

  1. 我在VM上有一个用于测试脚本的批处理文件。我可以成功使用此 .bat 来调用我的脚本, PROCESS_IN_PARALLEL 设置为(1a) True 或(1b) False < / em>的。当然,当 True (大约快4倍)时,它运行得更快 我有四重检查,这个 .bat 将相同的参数传递给我的脚本,就像Hudson一样,并且顺序相同。我还在我的脚本中添加了一行,将输入参数记录到文件中,并发现Hudson确实以正确的顺序传递了正确的参数。
  2. 我可以成功使用Hudson来调用我的脚本, PROCESS_IN_PARALLEL 设置为 False
  3. 我已经多次使用上述三个测试用例(甚至使用其他参数的多个配置)测试了我脚本的当前迭代,但都成功。
  4. 什么行不通:
    如果我使用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和哈德森都知道发生了什么?

0 个答案:

没有答案