本文整理汇总了Python中circus.client.CircusClient类的典型用法代码示例。如果您正苦于以下问题:Python CircusClient类的具体用法?Python CircusClient怎么用?Python CircusClient使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了CircusClient类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: circus_status
def circus_status(endpoint=None, process=None):
default = {
'pid': 'unknown',
'status': 'unknown',
'uptime': 'unknown'
}
if endpoint and process:
client = CircusClient(endpoint=endpoint, timeout=2)
try:
status = client.send_message('status')
stats = client.send_message('stats')
# Assuming here there's only a process
pid = stats['infos'][process].keys()[0]
try:
uptime = int(stats['infos'][process][pid]['age'])
default['uptime'] = humanize.naturaltime(datetime.datetime.now() - datetime.timedelta(seconds=uptime))
default['pid'] = pid
except:
# circus running but process stopped
pass
default['status'] = status['statuses'][process].lower()
except Exception as exc:
if'TIMED OUT' in exc.message.upper():
# circus stopped
default['status'] = 'unknown'
return default
示例2: handle_dealer
def handle_dealer(self, command, opts, msg, endpoint, timeout, ssh_server,
ssh_keyfile):
if endpoint is not None:
client = CircusClient(endpoint=endpoint, timeout=timeout,
ssh_server=ssh_server,
ssh_keyfile=ssh_keyfile)
else:
client = self.client
try:
if isinstance(msg, list):
for i, c in enumerate(msg):
clm = self._console(client, c['cmd'], opts,
c['msg'])
print("%s: %s" % (i, clm))
else:
print(self._console(client, command, opts, msg))
except CallError as e:
msg = str(e)
if 'timed out' in str(e).lower():
msg += TIMEOUT_MSG
sys.stderr.write(msg)
return 1
finally:
if endpoint is not None:
client.stop()
return 0
示例3: handle_dealer
def handle_dealer(self, cmd, opts, msg, endpoint, timeout, ssh_server,
ssh_keyfile):
if endpoint is not None:
client = CircusClient(endpoint=endpoint, timeout=timeout,
ssh_server=ssh_server,
ssh_keyfile=ssh_keyfile)
else:
client = self.client
try:
if isinstance(msg, list):
for i, command in enumerate(msg):
clm = self._console(client, command['cmd'], opts,
command['msg'])
print("%s: %s" % (i, clm))
else:
print(self._console(client, cmd, opts, msg))
except CallError as e:
sys.stderr.write(str(e) + " Try to raise the --timeout value\n")
return 1
finally:
if endpoint is not None:
client.stop()
return 0
示例4: TestCircus
class TestCircus(unittest.TestCase):
def setUp(self):
self.arbiters = []
self.files = []
self.tmpfiles = []
self.cli = CircusClient()
def tearDown(self):
self._stop_runners()
for file in self.files + self.tmpfiles:
if os.path.exists(file):
os.remove(file)
self.cli.stop()
def get_tmpfile(self, content=None):
fd, file = mkstemp()
os.close(fd)
self.tmpfiles.append(file)
if content is not None:
with open(file, 'w') as f:
f.write(content)
return file
@classmethod
def _create_circus(cls, callable, plugins=None, stats=False, **kw):
resolve_name(callable) # used to check the callable
fd, testfile = mkstemp()
os.close(fd)
wdir = os.path.dirname(__file__)
args = ['generic.py', callable, testfile]
worker = {'cmd': _CMD, 'args': args, 'working_dir': wdir,
'name': 'test', 'graceful_timeout': 4}
worker.update(kw)
if stats:
arbiter = get_arbiter([worker], background=True, plugins=plugins,
stats_endpoint=DEFAULT_ENDPOINT_STATS,
debug=kw.get('debug', False))
else:
arbiter = get_arbiter([worker], background=True, plugins=plugins,
debug=kw.get('debug', False))
arbiter.start()
return testfile, arbiter
def _run_circus(self, callable, plugins=None, stats=False, **kw):
testfile, arbiter = TestCircus._create_circus(callable, plugins, stats,
**kw)
self.arbiters.append(arbiter)
self.files.append(testfile)
return testfile
def _stop_runners(self):
for arbiter in self.arbiters:
arbiter.stop()
self.arbiters = []
def call(self, cmd, **props):
msg = make_message(cmd, **props)
return self.cli.call(msg)
示例5: _send_message
def _send_message(command, **properties):
# check if circusct.endpoint is in minion config
endpoint = __salt__['config.get']('circusctl.endpoint') or \
DEFAULT_ENDPOINT_DEALER
# sending keys with None values in the message to circus will result
# an error. removing them from properties
props = dict((k, v) for k, v in properties.iteritems() if v)
client = CircusClient(endpoint=endpoint)
return client.send_message(command, **props)
示例6: TestWatcher
class TestWatcher(TestCircus):
def setUp(self):
super(TestWatcher, self).setUp()
self.stream = QueueStream()
dummy_process = 'circus.tests.test_watcher.run_process'
self.test_file = self._run_circus(dummy_process,
stdout_stream={'stream': self.stream})
self.cli = CircusClient()
def call(self, cmd, **props):
msg = make_message(cmd, **props)
return self.cli.call(msg)
def tearDown(self):
super(TestWatcher, self).tearDown()
self.cli.stop()
def status(self, cmd, **props):
resp = self.call(cmd, **props)
return resp.get('status')
def numprocesses(self, cmd, **props):
resp = self.call(cmd, **props)
return resp.get('numprocesses')
def test_signal(self):
self.assertEquals(self.numprocesses('incr', name='test'), 2)
def get_pids():
return self.call('list', name='test').get('pids')
pids = get_pids()
self.assertEquals(len(pids), 2)
to_kill = pids[0]
self.assertEquals(self.status('signal', name='test', pid=to_kill,
signum=signal.SIGKILL), 'ok')
time.sleep(1) # wait for the process to die
# we still should have two processes, but not the same pids for them
pids = get_pids()
self.assertEquals(len(pids), 2)
self.assertTrue(to_kill not in pids)
def test_stats(self):
resp = self.call("stats").get('infos')
self.assertTrue("test" in resp)
watchers = resp['test']
self.assertEqual(watchers[watchers.keys()[0]]['cmdline'],
sys.executable.split(os.sep)[-1])
def test_streams(self):
time.sleep(1.)
# let's see what we got
self.assertTrue(self.stream.qsize() > 1)
示例7: TestWatcher
class TestWatcher(TestCircus):
def setUp(self):
super(TestWatcher, self).setUp()
self.stream = QueueStream()
dummy_process = 'circus.tests.test_watcher.run_process'
self.test_file = self._run_circus(dummy_process,
stdout_stream={'stream': self.stream})
self.cli = CircusClient()
def call(self, cmd, **props):
msg = make_message(cmd, **props)
return self.cli.call(msg)
def tearDown(self):
super(TestWatcher, self).tearDown()
self.cli.stop()
def status(self, cmd, **props):
resp = self.call(cmd, **props)
return resp.get('status')
def numprocesses(self, cmd, **props):
resp = self.call(cmd, **props)
return resp.get('numprocesses')
def testSignal(self):
self.assertEquals(self.numprocesses("incr", name="test"), 2)
self.assertEquals(self.call("list", name="test").get('processes'),
[1, 2])
self.assertEquals(self.status("signal", name="test", process=2,
signum=signal.SIGKILL), "ok")
time.sleep(1.0)
self.assertEquals(self.call("list", name="test").get('processes'),
[1, 3])
processes = self.call("list", name="test").get('processes')
self.assertEquals(self.status("signal", name="test",
signum=signal.SIGKILL), "ok")
time.sleep(1.0)
self.assertNotEqual(self.call("list", name="test").get('processes'),
processes)
def testStats(self):
resp = self.call("stats").get('infos')
self.assertTrue("test" in resp)
self.assertEqual(resp['test']['1']['cmdline'],
sys.executable.split(os.sep)[-1])
def test_streams(self):
time.sleep(2.)
# let's see what we got
self.assertTrue(self.stream.qsize() > 1)
示例8: test_singleton
def test_singleton(self):
self._stop_runners()
dummy_process = 'circus.tests.support.run_process'
self._run_circus(dummy_process, singleton=True)
cli = CircusClient()
# adding more than one process should fail
res = cli.send_message('incr', name='test')
self.assertEqual(res['numprocesses'], 1)
示例9: _test_stop
def _test_stop(self):
resp = self.cli.call(make_message("quit"))
self.assertEqual(resp.get("status"), "ok")
self.assertRaises(CallError, self.cli.call, make_message("list"))
self._stop_runners()
cli = CircusClient()
dummy_process = 'circus.tests.support.run_process'
self.test_file = self._run_circus(dummy_process)
msg = make_message("numprocesses")
resp = cli.call(msg)
self.assertEqual(resp.get("status"), "ok")
示例10: test_handler
def test_handler(self):
self._run_circus('circus.tests.test_client.run_process')
time.sleep(.5)
# playing around with the watcher
client = CircusClient()
def call(cmd, **props):
msg = make_message(cmd, **props)
return client.call(msg)
def status(cmd, **props):
resp = call(cmd, **props)
return resp.get('status')
def numprocesses(cmd, **props):
resp = call(cmd, **props)
return resp.get('numprocesses')
def numwatchers(cmd, **props):
resp = call(cmd, **props)
return resp.get('numwatchers')
def set(name, **opts):
return status("set", name=name, options=opts)
self.assertEquals(set("test", numprocesses=10), 'ok')
self.assertEquals(numprocesses("numprocesses"), 10)
self.assertEquals(set("test", numprocesses=1), 'ok')
self.assertEquals(numprocesses("numprocesses"), 1)
self.assertEquals(numwatchers("numwatchers"), 1)
self.assertEquals(call("list").get('watchers'), ['test'])
self.assertEquals(call("list", name="test").get('processes'), [10])
self.assertEquals(numprocesses("incr", name="test"), 2)
self.assertEquals(numprocesses("numprocesses"), 2)
self.assertEquals(numprocesses("decr", name="test"), 1)
self.assertEquals(numprocesses("numprocesses"), 1)
self.assertEquals(set("test", env={"test": 1, "test": 2}), 'error')
self.assertEquals(set("test", env={"test": '1', "test": '2'}),
'ok')
resp = call('get', name='test', keys=['env'])
options = resp.get('options', {})
self.assertEquals(options.get('env'), {'test': '1', 'test': '2'})
resp = call('stats', name='test')
self.assertEqual(resp['status'], 'ok')
resp = call('globaloptions', name='test')
self.assertEqual(resp['options']['pubsub_endpoint'],
'tcp://127.0.0.1:5556')
client.stop()
示例11: _client_test
def _client_test(self, ssh_server):
test_file = self._run_circus('circus.tests.support.run_process')
self.assertTrue(poll_for(test_file, 'START')) # process started
# playing around with the watcher
client = CircusClient(ssh_server=ssh_server)
def call(cmd, **props):
msg = make_message(cmd, **props)
return client.call(msg)
def status(cmd, **props):
resp = call(cmd, **props)
return resp.get('status')
def numprocesses(cmd, **props):
resp = call(cmd, **props)
return resp.get('numprocesses')
def numwatchers(cmd, **props):
resp = call(cmd, **props)
return resp.get('numwatchers')
def set(name, **opts):
return status("set", name=name, options=opts)
self.assertEquals(set("test", numprocesses=10), 'ok')
self.assertEquals(numprocesses("numprocesses"), 10)
self.assertEquals(set("test", numprocesses=1), 'ok')
self.assertEquals(numprocesses("numprocesses"), 1)
self.assertEquals(numwatchers("numwatchers"), 1)
self.assertEquals(call("list").get('watchers'), ['test'])
self.assertEquals(numprocesses("incr", name="test"), 2)
self.assertEquals(numprocesses("numprocesses"), 2)
self.assertEquals(numprocesses("incr", name="test", nb=2), 4)
self.assertEquals(numprocesses("decr", name="test", nb=3), 1)
self.assertEquals(numprocesses("numprocesses"), 1)
self.assertEquals(set("test", env={"test": 1, "test": 2}), 'error')
self.assertEquals(set("test", env={"test": '1', "test": '2'}),
'ok')
resp = call('get', name='test', keys=['env'])
options = resp.get('options', {})
self.assertEquals(options.get('env'), {'test': '1', 'test': '2'})
resp = call('stats', name='test')
self.assertEqual(resp['status'], 'ok')
resp = call('globaloptions', name='test')
self.assertEqual(resp['options']['pubsub_endpoint'],
'tcp://127.0.0.1:5556')
client.stop()
示例12: TestWatcher
class TestWatcher(TestCircus):
def setUp(self):
super(TestWatcher, self).setUp()
dummy_process = 'circus.tests.test_watcher.run_process'
self.test_file = self._run_circus(dummy_process)
self.cli = CircusClient()
def call(self, cmd, **props):
msg = make_message(cmd, **props)
return self.cli.call(msg)
def tearDown(self):
super(TestWatcher, self).tearDown()
self.cli.stop()
def status(self, cmd, **props):
resp = self.call(cmd, **props)
return resp.get('status')
def numprocesses(self, cmd, **props):
resp = self.call(cmd, **props)
return resp.get('numprocesses')
def testSignal(self):
self.assertEquals(self.numprocesses("incr", name="test"), 2)
self.assertEquals(self.call("list", name="test").get('processes'),
[1, 2])
self.assertEquals(self.status("signal", name="test", process=2,
signum=signal.SIGKILL), "ok")
time.sleep(1.0)
self.assertEquals(self.call("list", name="test").get('processes'),
[1, 3])
processes = self.call("list", name="test").get('processes')
self.assertEquals(self.status("signal", name="test",
signum=signal.SIGKILL), "ok")
time.sleep(1.0)
self.assertNotEqual(self.call("list", name="test").get('processes'),
processes)
def testStats(self):
resp = self.call("stats").get('infos')
self.assertTrue("test" in resp)
self.assertEqual(resp['test']['1']['cmdline'], 'python')
示例13: handle_dealer
def handle_dealer(self, cmd, opts, msg, endpoint, timeout):
client = CircusClient(endpoint=endpoint, timeout=timeout)
try:
if isinstance(msg, list):
for i, cmd in enumerate(msg):
clm = self._console(client, cmd, opts, msg)
print("%s: %s" % (i, clm))
else:
print(self._console(client, cmd, opts, msg))
except CallError as e:
sys.stderr.write(str(e))
return 1
finally:
client.stop()
return 0
示例14: __init__
def __init__(self, endpoint):
self.endpoint = str(endpoint)
self.client = CircusClient(endpoint=self.endpoint)
self.connected = False
self.watchers = []
self.stats = defaultdict(list)
self.refresher = Refresher(self)
示例15: setUp
def setUp(self):
super(TestWatcher, self).setUp()
self.stream = QueueStream()
dummy_process = 'circus.tests.test_watcher.run_process'
self.test_file = self._run_circus(dummy_process,
stdout_stream={'stream': self.stream})
self.cli = CircusClient()