本文整理汇总了Python中xmlrpc.client.ServerProxy.track_agent方法的典型用法代码示例。如果您正苦于以下问题:Python ServerProxy.track_agent方法的具体用法?Python ServerProxy.track_agent怎么用?Python ServerProxy.track_agent使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类xmlrpc.client.ServerProxy
的用法示例。
在下文中一共展示了ServerProxy.track_agent方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: DebugClient
# 需要导入模块: from xmlrpc.client import ServerProxy [as 别名]
# 或者: from xmlrpc.client.ServerProxy import track_agent [as 别名]
class DebugClient(object):
def __init__(self, addr, port):
self.server = None
self.addr_str = "http://%s:%s/" % (addr, port)
self.agent_id = None
self.worker = None
self.data = []
self.jobs = queue.Queue(16)
self.lock = threading.Lock()
def is_valid(self):
return self.server is not None
def connect(self):
self.server = None
self.server = ServerProxy(self.addr_str)
try:
ret = self.server.handshake()
return True, ret
except Exception as e:
return False, e
def get_agent_list(self):
return self.server.get_agent_list()
def set_agent_id(self, id):
self.agent_id = id
def track_agent(self, on_off):
return self.server.track_agent(self.agent_id, on_off)
def get_agent_track(self):
ret = self.server.get_agent_track(self.agent_id)
if ret is False:
return False
self.lock.acquire()
self.data += ret
self.lock.release()
def finish(self):
try:
self.track_agent(False)
except:
pass
return True
def start_worker(self):
assert(self.worker is None)
self.worker = threading.Thread(target=self.worker_body)
self.worker.start()
def put_job(self, work, priority = 100):
self.jobs.put((priority, work))
def worker_body(self):
while True:
if self.server is None:
try:
self.connect()
except:
pass
continue
_, job = self.jobs.get(True)
try:
ret = job()
except:
ret = False
if job == self.finish:
return
if ret is False:
logger.fatal("error connection reset")
self.server = None
###########################################################################
# outer API
###########################################################################
def shutdown(self):
self.jobs.put(self.finish)
self.worker.join()
def take_data(self):
self.lock.acquire()
ret, self.data = self.data, []
self.lock.release()
return ret