2017-09-08 25 views
2

パラレルPython(pp)モジュールを使用してクラスタを作成しようとしています。 クラスタをセットアップしました。ノードが用意されていますパラレルPythonとサブプロセス

./ppserver.py -p 35000 -i 127.0.0.1 -s "mysecret" 

マスターも設定され、ジョブが送信されます。

ppservers=("node-1:35000", "node-2:35000") 
job_server = pp.Server(ppservers=ppservers, secret="mysecret") 

f1 = job_server.submit(SomeFunction, argus1), modules=('subprocess',)) 
f2 = job_server.submit(SomeFunction, argus2), modules=('subprocess',)) 

a = f2() 
b = f1() 

SomeFunction:

def SomeFunction(argus): 
    proc = subprocess.check_output(['python', 
        '~/path/to/python_script.py', 
        '--argu1', argus[0], 
        '--argu2', argus[1], 
    ]) 
    return proc 

python_script.pyユーチューブAPIに会談し、MySQLデータベースにデータを書き込みます。

私はこのエラーを取得しています実行に

An error has occured during the function execution 
Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/dist-packages/ppworker.py", line 90, in run 
    __result = __f(*__args) 
    File "<string>", line 16, in SomeFunction 
    File "/usr/lib/python2.7/subprocess.py", line 574, in check_output 
    raise CalledProcessError(retcode, cmd, output=output) 
subprocess.CalledProcessError: Command '['python', '~/path/to/python_script.py', '--argu1', 'argu1', '--argu2', 'argu2']' returned non-zero exit status 2 

python_script.pyは完全に、任意のアイデアをdebugedされますか?

答えて

2

あなたのパスにはデフォルトでは展開されていない~が含まれているからです。それを修正する

2つの方法:

proc = subprocess.check_output(['python', 
        os.path.expanduser('~/path/to/python_script.py'), 
        '--argu1', 'argu1', 
        '--argu2', 'argu2', 
:このよう os.path.expanduser

を使用します。

  • シェルを介して実行するshell=True引数(推奨されません)
  • 最善の方法を追加
+0

'os.path.expanduser'が完璧に動作します! tnx –

関連する問題