本文整理汇总了Python中xmlrpclib.ServerProxy类的典型用法代码示例。如果您正苦于以下问题:Python ServerProxy类的具体用法?Python ServerProxy怎么用?Python ServerProxy使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了ServerProxy类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: Client
class Client(wx.App):
"""
主Client类,用于设定GUI,启动为文件服务的Node。
"""
def __inif__(self, url, dirname, urlfile):
"""
创建一个随机的密码,使用这个密码实例化Node。利用Node的_start方法(确保Thread是个无交互的后台程序,
这样他会随着程序退出而退出)启动Thread,读取URL文件中的所有URL,并且将Node介绍给这些URL。
"""
super(Client, self).__init__()
self.secret = randomString(SECRET_LENGTH)
n = Node(url, dirname, self.secret)
t = Thread(target=n._start)
t.setDaemon(1)
t.start()
#让服务器先启动。
sleep(HEAD_START)
self.server = ServerProxy(url)
for line in open(urlfile):
line = line.strip()
self.server.hello(line)
def OnInit(self):
"""
设置GUI。创建窗体、文本框和按钮,并且进行布局。将提交按钮绑定到self.fetchHandler上。
"""
win = wx.Frame(None, title="File Sharing Client", size=(400,45))
bkg = wx.Panel(win)
self.input = input = wx.TextCtrl(bkg)
submit = wx.Button(bkg, label="Fetch", size=(80, 25))
submit.Bind(wx.EVT_BUTTON, self.fetchHandler)
hbox = wx.BoxSizer()
hbox.Add(input, proportion=1, flag=wx.ALL|wx.EXPAND, border=10)
hbox.Add(submit, flag=wx.TOP|wx.BOTTON|wx.RIGHT, border=10)
vbox = wx.BoxSizer(wx.VERTICAL)
vbox.Add(hbox, proportion=0, flag=wx.EXPAND)
bkg.SetSizer(vbox)
win.Show()
return True
def fetchHandler(self, event):
"""
在用户点击‘Fetch’按钮时调用,读取文本框中的查询,调用服务器Node的fetch方法。
如果查询没有被处理则打印错误信息。
"""
query = self.input.getValue()
try:
self.server.fetch(query, self.secret)
except Fault, f:
if f.faultCode != UNHANDLED: raise
print "Couldn't find the file", query
示例2: execute
def execute(args, parser):
global binstar_upload
global client
binstar_upload = args.binstar_upload
client = ServerProxy(args.pypi_url)
package = args.pypi_name[0]
if args.release == 'latest':
version = None
all_versions = False
else:
all_versions = True
version = args.release[0]
releases = client.package_releases(package, all_versions)
if not releases:
sys.exit("Error: PyPI does not have a package named %s" % package)
if all_versions and version not in releases:
print(releases)
print("Warning: PyPI does not have version %s of package %s" % (version, package))
if all_versions:
build_package(package, version)
else:
version = releases[0]
build_package(package, version)
示例3: Client
class Client(Cmd):
'''
A text-based client interface.
'''
prompt = '>'
def __init__(self, url, dirname, urlfile):
'''
Initialize the node and start the Node server in a seperate thread.
'''
Cmd.__init__(self)
self.secret = randomString(SECRET_LENGTH)
n = Node(url, dirname, self.secret)
t = Thread(target=n._start)
t.setDaemon(1)
t.start()
sleep(HEAD_START)
self.server = ServerProxy(url)
for line in open(urlfile):
self.server.hello(line.strip())
def do_fetch(self, arg):
'''
Fetch the specified file.
'''
try:
self.server.fetch(arg, self.secret)
except Fault, f:
if f.faultCode !=UNHANDLED:
raise
print 'Could not find ', arg
示例4: RPC
class RPC(object):
_instance = None
def __new__(cls, host):
if not cls._instance:
cls._instance = object.__new__(cls, host)
return cls._instance
def __init__(self, host):
self.host = host
host = "localhost"
self.server = ServerProxy("http://%s:%u" % (host, RPC_PORT))
def _close(self):
print "stop"
self.server.stop()
del self.server
@classmethod
def close(cls):
print "close", cls._instance
if not cls._instance:
return
cls._instance._close()
cls._instance = None
示例5: test_listen_port
def test_listen_port(self):
"""
The test case to test the server
created by NodeSamplerServer class.
:return:
"""
def start_server():
self.node_sampler_server.start()
server_thread = Thread(target=start_server)
server_thread.setDaemon(True)
server_thread.start()
proxy = ServerProxy("http://localhost:8000")
service_a = Service(name="$$service_a$$",
check_methods=TEST_METHOD,
ip=TEST_IP)
service_b = Service(name="$$service_b$$",
check_methods=TEST_METHOD,
ip=TEST_IP)
service_c = Service(name="$$service_c$$",
check_methods=TEST_METHOD,
ip=TEST_IP)
fake_services = [service_a, service_b, service_c]
self.assertEquals(
proxy.sample(fake_services), 1,
"NodeSamplerServer cannot create object.")
示例6: TriggerServer
class TriggerServer():
def __init__(self, ip, port, robot_name):
self._server = Server((ip, port), allow_none=True)
self._server.register_function(self.get, 'get')
self._server.register_function(lambda: 'OK', 'ping')
self._sp = ServerProxy("http://%s:%d"%(ip,port))
self._ros_publisher = rospy.Publisher('/%s/trigger'%robot_name, String, queue_size=10)
self._stop = False
# RPC METHOD
def get(self, data):
self._ros_publisher.publish(String(data=data))
def serve(self):
thread.start_new_thread(self._serve, ())
rospy.spin()
self._stop = True
self._sp.ping()
def _serve(self):
while not self._stop:
self._server.handle_request()
rospy.loginfo("Shutting down TriggerServer")
示例7: execute
def execute(args, parser):
global binstar_upload
global client
binstar_upload = args.binstar_upload
client = ServerProxy(args.pypi_url)
package = args.pypi_name[0]
if args.release == 'latest':
version = None
all_versions = False
else:
all_versions = True
version = args.release[0]
search = client.search({'name': package})
if search:
r_name = list(filter(lambda x: ('name' in x and package.lower() == x['name'].lower()), search))
if r_name:
print('Package search: %s' % r_name[0])
package = r_name[0]['name']
releases = client.package_releases(package, all_versions)
if not releases:
sys.exit("Error: PyPI does not have a package named %s" % package)
if all_versions and version not in releases:
print(releases)
print("Warning: PyPI does not have version %s of package %s" %
(version, package))
if all_versions:
build_package(package, version)
else:
version = releases[0]
build_package(package, version)
示例8: requestTopic
def requestTopic(self, topic):
code, statusMessage, publishers = self.master.registerSubscriber(
self.callerId, topic, lookupTopicType(topic)[0], self.callerApi
)
assert code == 1, (code, statusMessage)
assert len(publishers) == 1, (topic, publishers) # i.e. fails if publisher is not ready now
print publishers
publisher = ServerProxy(publishers[0])
code, statusMessage, protocolParams = publisher.requestTopic(self.callerId, topic, [["TCPROS"]])
assert code == 1, (code, statusMessage)
assert len(protocolParams) == 3, protocolParams
print code, statusMessage, protocolParams
hostPortPair = (protocolParams[1], protocolParams[2])
soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # TCP
soc.connect(hostPortPair)
soc.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
soc.setblocking(0)
soc.settimeout(SOCKET_TIMEOUT)
header = prefix4BytesLen(
prefix4BytesLen("callerid=" + self.callerId)
+ prefix4BytesLen("topic=" + topic)
+ prefix4BytesLen("type=" + lookupTopicType(topic)[0])
+ prefix4BytesLen("md5sum=" + lookupTopicType(topic)[1])
+ ""
)
soc.send(header)
return soc
示例9: Client
class Client(Cmd):
prompt = '>'
def __init__(self, url, dirname, urlfile):
Cmd.__init__(self)
self.secret = randomString(SECRET_LENGTH)
n = Node(url, dirname, self.secret)
t = Thread(target=n._start)
t.setDaemon(1)
t.start()
sleep(HEAD_START)
self.server = ServerProxy(url)
for line in open(urlfile):
line = line.strip()
self.server.hello(line)
def do_fetch(self, arg):
try:
self.server.fetch(arg, self.secret)
except Fault as f:
if f.faultCode != UNHANDLED:
raise
print "Couldn't find the file", arg, f
def do_exit(self, arg):
print
sys.exit()
do_EOF = do_exit
示例10: Hella
class Hella(FooApp):
name = 'hella'
config_opts = {
'password': 'The password defined as Hellanzb.XMLRPC_PASSWORD in hellanzb.conf',
'server': 'The IP address or hostname running hellanzb',
'port': 'The port hellanzb is running on. The default is 8760',
}
def __init__(self, server=None):
FooApp.__init__(self, server)
self.hellaserver = ServerProxy('http://hellanzb:%[email protected]%s:%s/' % (self.data['password'], self.data['server'], self.data['port']))
self.data = FileStore('/tmp/apps/hella')
try:
self.cache = json.loads(self.data['cache'])
except:
self.cache = []
def send(self, msg):
response = self.hellaserver.enqueuenewzbin(int(msg['text']))
return
def run(self):
while True:
status = self.hellaserver.status()
for entry in status['log_entries']:
for key, value in entry.items():
if not value in self.cache:
self.recv('%s: %s' % (self.name, value))
self.cache.append(value)
self.data['cache'] = json.dumps(self.cache)
sleep(10)
示例11: Graph
class Graph( object ):
ADDRESS = "http://127.0.0.1:8000/"
"""The default pyWebGraph XML-RPC server address: `http://127.0.0.1:8000/`"""
def __init__( self, address = None ):
if not address: address = Graph.ADDRESS
self.__proxy = ServerProxy( address )
self.__wrapped = [ 'current_node', 'num_nodes', 'node_tos' ]
def __getattr__( self, name ):
if name in self.__wrapped:
return getattr( self, name )
else:
return getattr( self.__proxy, name )
def get_num_nodes( self ):
return self.__proxy.get_num_nodes()
num_nodes = property( get_num_nodes )
def get_current_node( self ):
return self.__proxy.get_current_node()
def set_current_node( self, node ):
return self.__proxy.set_current_node( node )
current_node = property( get_current_node, set_current_node )
def node_tos( self, node ):
return self.__proxy.node_tos( node ).encode( 'utf8' )
示例12: attk_server
class attk_server(object):
def __init__(self, password, url):
self.id = None
self.password = password
self.url = url
self.xml = ServerProxy(self._make_url())
def _make_url(self):
url = list(urlsplit(self.url))
url[1] = 'x:' + self.password + '@' + url[1]
url[2] = url[2] + 'RPC2'
return urlunsplit(url)
def ping(self):
debug('client pinging server')
return self.xml.ping() == 'pong'
def finish_attack(self, attack_id, status):
debug('client finishing attack with server')
self.xml.finishAttack(attack_id, config.client_id, status)
def register(self):
debug('client registering with server')
retval = self.xml.registerClient(
self.password,
config.client_id,
config.url,
config.password,
)
if retval is not False:
self.id = retval
示例13: on_task_output
def on_task_output(self, task, config):
from xmlrpclib import ServerProxy
params = dict(config)
server = ServerProxy(params["url"])
for entry in task.accepted:
if task.options.test:
log.info('Would add into nzbget: %s' % entry['title'])
continue
# allow overriding the category
if 'category' in entry:
params['category'] = entry['category']
try:
server.appendurl(entry["title"] + '.nzb',
params["category"],
params["priority"],
params["top"],
entry["url"])
log.info("Added `%s` to nzbget" % entry["title"])
except:
log.critical("rpc call to nzbget failed")
entry.fail("could not call appendurl via RPC")
示例14: Client
class Client(Cmd):
"""
A simple text-based interface to the Node class.
"""
prompt = '> '
def __init__(self, url, dirname, urlfile):
"""
Sets the url, dirname, and urlfile, and starts the Node
Server in a separate thread.
"""
Cmd.__init__(self)
self.secret = randomString(SECRET_LENGTH)
n = Node(url, dirname, self.secret)
t = Thread(target=n._start)
t.setDaemon(1)
t.start()
# Give the server a head start:
sleep(HEAD_START)
self.server = ServerProxy(url)
for line in open(urlfile):
line = line.strip()
self.server.hello(line)
def do_fetch(self, arg):
"Call the fetch method of the Server."
try:
self.server.fetch(arg, self.secret)
except Fault, f:
if f.faultCode != UNHANDLED: raise
print "Couldn't find the file", arg
示例15: editDevice
def editDevice(cluster, host):
Zenoss = {'deviceName': '', 'devicePath': '', 'tag': '', 'serialNumber': '', 'zSnmpCommunity': 'cci-ro',
'zSnmpPort': '161', 'zSnmpVer': 'v2c', 'rackSlot': '0', 'productionState': '1000', 'comments': '',
'hwManufacturer': '', 'hwProductName': '', 'osManufacturer': '', 'osProductName': '',
'locationPath': '', 'groupPaths': '', 'systemPaths': '', 'statusMonitors': '',
'performanceMonitor': '', 'discoverProto': 'snmp', 'priority': '3'}
Zenoss['deviceName'] = host
Zenoss['systemPaths'] = cluster
url = http(Zenoss['deviceName'])
valid = re.search("http", url)
if valid:
snmp_out = http(url+snmpurl)
Zenoss['zSnmpCommunity'] = snmp_out[0]
Zenoss['zSnmpVer'] = snmp_out[1]
sys_match = re.search("\w+", "cluster")
if sys_match:
Zenoss['systemPaths'] = "/%s" % (cluster)
# groups_return = http(groupsUrl)
# Zenoss['groupPaths'] = group_final(groups_return, Zenoss['systemPaths'])
serv = ServerProxy (url,allow_none=1)
serv.manage_editDevice(Zenoss['tag'], Zenoss['serialNumber'],
Zenoss['zSnmpCommunity'], Zenoss['zSnmpPort'], Zenoss['zSnmpVer'], Zenoss['rackSlot'],
Zenoss['productionState'], Zenoss['comments'], Zenoss['hwManufacturer'], Zenoss['hwProductName'],
Zenoss['osManufacturer'], Zenoss['osProductName'], Zenoss['locationPath'] , Zenoss['groupPaths'],
Zenoss['systemPaths'])
if verbose:
print "%s\n%s\n%s\n%s\n%s\n%s\n" % (url,Zenoss['zSnmpCommunity'],Zenoss['zSnmpVer'],Zenoss['comments'], Zenoss['systemPaths'],Zenoss['groupPaths'])