何らかの理由で、django ビューからソース コード フォルダーをチェックアウトする必要があり、これには 'Popen' を使用します。
すべてが正常に動作し、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
- ジャンゴのバージョン: 1.1.2
- mod wsgi バージョン: 3.3
私はこれに何時間もこだわっていますが、ヒントは大歓迎です!
ありがとう。