由於某些原因,我需要從django視圖中籤出一個源代碼文件夾,並且我使用了'Popen'。django wsgi + Popen + svn結帳
一切工作正常,它使用django runserver時完美。
但是,在將代碼部署到apache2 + wsgi後,Popen無法正常工作。它總是在命令實際完成之前返回。它也不會拋出錯誤,它只是拋出完整的輸出,並且檢查了檢出的文件夾,它們也不完整。
整個svn檢出過程大約需要5-6秒,標準輸出非常大(大約3000個字符)。
我知道有一個pysvn庫,但它似乎很難安裝在過時的ubuntu服務器上。
基本上,這是我現在卡住的唯一東西。
我用來調用檢查出碼片以下:
def run_cmd(argument_list, output_file = None):
print "arguments", argument_list
p = subprocess.Popen(argument_list, stdout=subprocess.PIPE)
content = ""
while True:
line = p.stdout.read(50)
if not line:
break
content += line
if output_file:
fout = file(output_file, "w")
fout.write(content)
fout.close()
return content
output = run_cmd(["/usr/bin/svn", "--ignore-externals", "co", svn_url, src_folder])
這裏有一些信息可能是有用的:
- 號文件的檢查出:3000左右
- 需要檢出的時間:約5-6秒(只是基於文件的SVN位置)
- python版本:2.6.4
- Django的版本:1.1.2
- MOD WSGI版本:3.3
我一直停留在這幾個小時,任何暗示是非常感謝!
謝謝。
是否svn_url包括用戶名和密碼?部署webserver作爲測試服務器的相同用戶運行? – 2012-07-21 07:52:31
nope,它是一個基於svn位置的文件,所以不需要用戶名和密碼。 – 2012-07-21 07:58:25
測試環境和部署Web服務器進程是否在同一用戶下運行?如果沒有,請嘗試在運行'manage.py runserver'之前對運行部署網絡服務器的同一用戶執行操作。 – 2012-07-21 08:11:10