2013-03-20 57 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 ")