2013-03-20 120 views
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) 

創建服務器的方法是:

@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]執行任務'create_server'我的猜測是這是一個字符串問題,因爲我是python的新手

致命錯誤:名稱查找失敗對於t

底層異常: 名稱或服務不知道

中止。

它對應於我傳入的主機的第一個字符(作爲字符串't ...')。爲什麼會這樣?

我打電話start_experiment被定義爲「name.server.org」

+1

如果錯誤是與create_server任務,然後又在哪裏呢? – Dikei 2013-03-20 03:07:52

+0

編輯包含功能 – user1018513 2013-03-20 05:25:32

回答

0

你的問題是在create_server()最後幾行SERVER_HOST。看一看從該函數以下兩行:

 
with lcd(code_dir): 
    run("java -jar server.jar " + port + " > log_server.txt ") 

run()命令被遠程服務器(通過env.host指定)上執行,但with lcd(code_dir):位強制執行本地機器上的特定目錄,而不是在遠程服務器上。

您收到的錯誤說您嘗試使用未知名稱或服務。在這種情況下,程序很可能無法找到server.jar。原因是您沒有指定遠程計算機上的當前目錄(其中run()命令正在執行)。因此,改變lcd()cd()應該解決您的問題:

 
with cd(code_dir): 
    run("java -jar server.jar " + port + " > log_server.txt ")