我是使用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
任何人都可以解释我如何做到这一点,提前谢谢你
答案 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}}