0

私は Python とファブリックの完全な初心者です。次のコードがあります。

def initialise_clients( hostlist): 
 env.roledefs['clients']=hostlist
 print hostlist 
 print("Setting up deployment: running on %d nodes \n" % len(hostlist))
 create_jar()


def init_server(host): 
 env.roledefs['server'] = host
 print "Initialising Server " + host

次のようにインスタンス化:

 def start_experiment(nb_clients , nb_machines , nb_operations  , trx_length , nb_reads ,  nb_writes ,     
  dataset , server_host  , server_port , hostclients): 
  print("Running Experiment")
  address = server_host + ':' + server_port
  execute(init_server,address)
  execute(initialise_clients,hostclients)
  execute(create_server, server_port )

create Server メソッドは次のとおりです。

 @roles('server')
 def create_server( port): 
  print("Creating Server")
  print env.host
  print(port)
  code_dir = '/net/work/evaluation/'
  with lcd(code_dir): 
     run("java -jar server.jar " + port + " > log_server.txt ")
     print("Server Initialised - Waiting for NFS to propagate ")

私が抱えている問題はこれです: create_server タスクを実行すると: 私はこれを持っています: [t] Executing task 'create_server' 私の推測では、Python を初めて使用するため、文字列の問題であると思われます。

致命的なエラー: t の名前の検索に失敗しました

根本的な例外: 名前またはサービスが不明

中止しています。

これは、渡すホストの最初の文字に対応します (文字列 't...' として)。これはなぜですか?

「name.server.org」として定義されたserver_hostでstart_experimentを呼び出します

4

1 に答える 1

0

問題は の最後の数行にありcreate_server()ます。その関数の次の 2 行を見てください。

lcd(code_dir):
    run("java -jar server.jar " + ポート + " > log_server.txt ")

run()コマンドはリモート サーバー ( で指定) で実行されていますがenv.host、ビットはリモート サーバーではなく、ローカルマシンwith lcd(code_dir):上の特定のディレクトリを強制します。

表示されるエラーは、不明な名前またはサービスを使用しようとしていることを示しています。この場合、プログラムが server.jar を見つけられない可能性が高いです。run()これは、リモート マシン (コマンドが実行されている場所)の現在のディレクトリを指定していないためです。したがって、 を a に変更するlcd()cd()、問題が解決するはずです。

CD(code_dir)を使用:
    run("java -jar server.jar " + ポート + " > log_server.txt ")
于 2013-07-23T05:26:43.757 に答える