2012-05-17 34 views
0

我有一些代碼使用子進程來查看來自git目錄的日誌。我的代碼似乎在本地django開發環境中執行時工作正常。然而,一旦部署(使用Apache/mode_wsgi),stdout read()的輸出就會變空。我的開發和生產機器現在是一樣的,我也試圖確保每個文件都是可讀的。一旦Web應用程序與Apache部署,Popen的意外行爲

有沒有人有一個想法,爲什麼Popen沒有返回任何輸出一旦部署在這裏?謝謝。

def getGitLogs(projectName, searchTerm=None, since): 
    os.chdir(os.path.join(settings.SCM_GIT, projectName)) 
    cmd = "git log --since {0} -p".format(since) 
    p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, close_fds=True) 
    output = p.stdout.read() 
    ### here output comes back as expected in dev environment, but empty in once deployed 
    return filterCommits(parseCommits(output), searchTerm) 
+0

是什麼,顯示在你的Apache服務器日誌? – mata

+0

沒有什麼顯眼的......我甚至試過顯式地記錄輸出變量,它只是說它是空的,而不是無或任何東西 –

+1

也許相關:http://stackoverflow.com/questions/8494335/running-subprocess-popen-under -apachemod-wsgi-is-always-returning-an-error-with什麼是git log命令的返回碼(從子進程調用)?什麼apache/mod_wsgi/python版本? – jpic

回答

2
  1. 鏈的chdir作爲命令的一部分(即cd /foo/bar/zoo
  2. 傳遞的完整路徑git

所以你的命令將結束cd /foo/bar/zoo && /usr/bin/git log --since

相關問題