如何从另一个

时间:2017-09-18 01:46:24

标签: python

我是使用python和处理XenServer API的新手

我正在尝试启动一个脚本,该脚本使用XenServer API在从客户端接收数据时启动虚拟机。代码在

之下
import socket
import json
import startvm

ip = socket.gethostbyname(socket.gethostname())
print("ip of server machiene  = " + ip  )

# create a socket object
serversocket = socket.socket(
socket.AF_INET, socket.SOCK_STREAM)
host = "127.0.0.1"
port = 9999

# bind to the port
serversocket.bind((host, port))

print ("server is waiting for data")

# queue up to 5 requests
serversocket.listen(5)

 running = True

 while True:

# establish a connection
clientsocket, addr = serversocket.accept()

print("Got a connection from %s" % str(addr))

while running:
    receivedData = clientsocket.recv(1024)
    #json = receivedData

    if receivedData:

        print (receivedData)
        execfile(startvm.py)

    else:

        print (" -- data end --" )
        running = False

serversocket.close()

我正在使用execute(脚本名称)。它给了我以下错误

在服务器端脚本

ip of server machine  = 192.168.0.11
server is waiting for data
Traceback (most recent call last):
Got a connection from ('127.0.0.1', 50128)
  File "/Users/jasmeet/IdeaProjects/vKey-cloud/server.py", line 45, in 
<module>
0
  execfile(startvm.py)
AttributeError: 'module' object has no attribute 'py'

并在客户端脚本上

connecting to server at 127.0.0.1 on port 9999
Traceback (most recent call last):
  File "/Users/jasmeet/IdeaProjects/vKey-cloud/client.py", line 27, in 
  <module>
clientSocket.send(str(x))
socket.error: [Errno 32] Broken pipe

任何人都可以解释我如何做到这一点,提前谢谢你

2 个答案:

答案 0 :(得分:0)

您可以在开头导入文件,如:

from startvm.py import A_FUNCTION_FROM_THAT_FILE

这样它就被优化了 并替换

execfile(startvm.py)

A_FUNCTION_FROM_THAT_FILE(*args)

例如:

# script A.py
from B.py import customfunc
customfunc(2, 4)

# script B.py
def customfunc(x, y):
    return x*y

答案 1 :(得分:0)

# server.py import socket import json import startvm ip = socket.gethostbyname(socket.gethostname()) print("ip of server machiene = " + ip ) # create a socket object serversocket = socket.socket( socket.AF_INET, socket.SOCK_STREAM) # get local machine name #host = socket.gethostname() #port = 9999 # port 80 host = "127.0.0.1" port = 9999 # bind to the port serversocket.bind((host, port)) print ("server is waiting for data") # queue up to 5 requests serversocket.listen(5) while True: running = True # establish a connection clientsocket, addr = serversocket.accept() print("Got a connection from %s" % str(addr)) while running: receivedData = clientsocket.recv(1024) #json = receivedData if receivedData: print (receivedData) #execfile('startvm.py') else: print (" -- data end --" ) running = False 编写以下代码解决了我的问题

{{1}}