本文整理汇总了Python中circus.watcher.Watcher类的典型用法代码示例。如果您正苦于以下问题:Python Watcher类的具体用法?Python Watcher怎么用?Python Watcher使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Watcher类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: SomeWatcher
class SomeWatcher(threading.Thread):
def __init__(self, **kw):
threading.Thread.__init__(self)
self.stream = QueueStream()
self.loop = self.watcher = None
self.kw = kw
def run(self):
qstream = {"stream": self.stream}
old_environ = os.environ
old_paths = sys.path[:]
try:
sys.path = ["XYZ"]
os.environ = {"COCONUTS": "MIGRATE"}
cmd = (
'%s -c "import sys; ' "sys.stdout.write(':'.join(sys.path)); " ' sys.stdout.flush()"'
) % sys.executable
self.loop = ioloop.IOLoop()
self.watcher = Watcher(
"xx", cmd, copy_env=True, copy_path=True, stdout_stream=qstream, loop=self.loop, **self.kw
)
self.watcher.start()
self.loop.start()
finally:
os.environ = old_environ
sys.path[:] = old_paths
def stop(self):
if self.loop is not None:
self.loop.stop()
if self.watcher is not None:
self.watcher.stop()
self.join()
示例2: SomeWatcher
class SomeWatcher(object):
def __init__(self, loop=None, **kw):
self.stream = QueueStream()
self.watcher = None
self.kw = kw
if loop is None:
self.loop = tornado.ioloop.IOLoop.instance()
else:
self.loop = loop
@tornado.gen.coroutine
def run(self):
qstream = {'stream': self.stream}
old_environ = os.environ
old_paths = sys.path[:]
try:
sys.path = ['XYZ']
os.environ = {'COCONUTS': 'MIGRATE'}
cmd = ('%s -c "import sys; '
'sys.stdout.write(\':\'.join(sys.path)); '
' sys.stdout.flush()"') % sys.executable
self.watcher = Watcher('xx', cmd, copy_env=True, copy_path=True,
stdout_stream=qstream, loop=self.loop,
**self.kw)
yield self.watcher.start()
finally:
os.environ = old_environ
sys.path[:] = old_paths
@tornado.gen.coroutine
def stop(self):
if self.watcher is not None:
yield self.watcher.stop()
示例3: SomeWatcher
class SomeWatcher(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.stream = QueueStream()
self.loop = self.watcher = None
def run(self):
qstream = {'stream': self.stream}
old_environ = os.environ
old_paths = sys.path[:]
try:
sys.path = ['XYZ']
os.environ = {'COCONUTS': 'MIGRATE'}
cmd = ('%s -c "import sys; '
'sys.stdout.write(\':\'.join(sys.path)); '
' sys.stdout.flush()"') % sys.executable
self.loop = ioloop.IOLoop.instance()
self.watcher = Watcher('xx', cmd, copy_env=True, copy_path=True,
stdout_stream=qstream, loop=self.loop)
self.watcher.start()
self.loop.start()
finally:
os.environ = old_environ
sys.path[:] = old_paths
def stop(self):
if self.loop is not None:
self.loop.stop()
if self.watcher is not None:
self.watcher.stop()
self.join()
示例4: test_env_section
def test_env_section(self):
conf = get_config(_CONF['env_section'])
watchers_conf = {}
for watcher_conf in conf['watchers']:
watchers_conf[watcher_conf['name']] = watcher_conf
watcher1 = Watcher.load_from_config(watchers_conf['watcher1'])
watcher2 = Watcher.load_from_config(watchers_conf['watcher2'])
self.assertEquals('lie', watcher1.env['CAKE'])
self.assertEquals('cake', watcher2.env['LIE'])
for watcher in [watcher1, watcher2]:
self.assertEquals("%s:/bin" % os.getenv('PATH'),
watcher.env['PATH'])
示例5: load_from_config
def load_from_config(cls, config_file):
cfg = get_config(config_file)
watchers = []
for watcher in cfg.get('watchers', []):
watchers.append(Watcher.load_from_config(watcher))
sockets = []
for socket in cfg.get('sockets', []):
sockets.append(CircusSocket.load_from_config(socket))
httpd = cfg.get('httpd', False)
if httpd:
# controlling that we have what it takes to run the web UI
# if something is missing this will tell the user
try:
import circusweb # NOQA
except ImportError:
logger.error('You need to install circus-web')
sys.exit(1)
# creating arbiter
arbiter = cls(watchers, cfg['endpoint'], cfg['pubsub_endpoint'],
check_delay=cfg.get('check_delay', 1.),
prereload_fn=cfg.get('prereload_fn'),
stats_endpoint=cfg.get('stats_endpoint'),
plugins=cfg.get('plugins'), sockets=sockets,
warmup_delay=cfg.get('warmup_delay', 0),
httpd=httpd,
httpd_host=cfg.get('httpd_host', 'localhost'),
httpd_port=cfg.get('httpd_port', 8080),
debug=cfg.get('debug', False),
ssh_server=cfg.get('ssh_server', None))
return arbiter
示例6: load_from_config
def load_from_config(cls, config_file):
cfg = get_config(config_file)
watchers = []
for watcher in cfg.get('watchers', []):
watchers.append(Watcher.load_from_config(watcher))
sockets = []
for socket in cfg.get('sockets', []):
sockets.append(CircusSocket.load_from_config(socket))
# creating arbiter
arbiter = cls(watchers, cfg['endpoint'], cfg['pubsub_endpoint'],
check_delay=cfg.get('check_delay', 1.),
prereload_fn=cfg.get('prereload_fn'),
stats_endpoint=cfg.get('stats_endpoint'),
plugins=cfg.get('plugins'), sockets=sockets,
warmup_delay=cfg.get('warmup_delay', 0),
httpd=cfg.get('httpd', False),
httpd_host=cfg.get('httpd_host', 'localhost'),
httpd_port=cfg.get('httpd_port', 8080),
debug=cfg.get('debug', False),
stream_backend=cfg.get('stream_backend', 'thread'),
ssh_server=cfg.get('ssh_server', None))
return arbiter
示例7: load_from_config
def load_from_config(cls, config_file):
cfg = get_config(config_file)
# hack reload ioloop to use the monkey patched version
reload(ioloop)
watchers = []
for watcher in cfg.get('watchers', []):
watchers.append(Watcher.load_from_config(watcher))
sockets = []
for socket in cfg.get('sockets', []):
sockets.append(CircusSocket.load_from_config(socket))
# creating arbiter
arbiter = cls(watchers, cfg['endpoint'], cfg['pubsub_endpoint'],
check_delay=cfg.get('check_delay', 1.),
prereload_fn=cfg.get('prereload_fn'),
stats_endpoint=cfg.get('stats_endpoint'),
plugins=cfg.get('plugins'), sockets=sockets,
warmup_delay=cfg.get('warmup_delay', 0),
httpd=cfg.get('httpd', False),
httpd_host=cfg.get('httpd_host', 'localhost'),
httpd_port=cfg.get('httpd_port', 8080))
return arbiter
示例8: load_from_config
def load_from_config(cls, config_file):
cfg = get_config(config_file)
# hack reload ioloop to use the monkey patched version
reload(ioloop)
watchers = []
for watcher in cfg.get("watchers", []):
watchers.append(Watcher.load_from_config(watcher))
sockets = []
for socket in cfg.get("sockets", []):
sockets.append(CircusSocket.load_from_config(socket))
# creating arbiter
arbiter = cls(
watchers,
cfg["endpoint"],
cfg["pubsub_endpoint"],
check_delay=cfg.get("check_delay", 1.0),
prereload_fn=cfg.get("prereload_fn"),
stats_endpoint=cfg.get("stats_endpoint"),
plugins=cfg.get("plugins"),
sockets=sockets,
)
return arbiter
示例9: test_issue310
def test_issue310(self):
'''
https://github.com/mozilla-services/circus/pull/310
Allow $(circus.sockets.name) to be used in args.
'''
conf = get_config(_CONF['issue310'])
watcher = Watcher.load_from_config(conf['watchers'][0])
socket = CircusSocket.load_from_config(conf['sockets'][0])
try:
watcher.initialize(None, {'web': socket}, None)
process = Process(watcher._nextwid, watcher.cmd,
args=watcher.args,
working_dir=watcher.working_dir,
shell=watcher.shell, uid=watcher.uid,
gid=watcher.gid, env=watcher.env,
rlimits=watcher.rlimits, spawn=False,
executable=watcher.executable,
use_fds=watcher.use_sockets,
watcher=watcher)
sockets_fds = watcher._get_sockets_fds()
formatted_args = process.format_args(sockets_fds=sockets_fds)
fd = sockets_fds['web']
self.assertEqual(formatted_args,
['foo', '--fd', str(fd)])
finally:
socket.close()
示例10: test_issue310
def test_issue310(self):
"""
https://github.com/mozilla-services/circus/pull/310
Allow $(circus.sockets.name) to be used in args.
"""
conf = get_config(_CONF["issue310"])
watcher = Watcher.load_from_config(conf["watchers"][0])
socket = CircusSocket.load_from_config(conf["sockets"][0])
watcher.initialize(None, {"web": socket}, None)
process = Process(
watcher._process_counter,
watcher.cmd,
args=watcher.args,
working_dir=watcher.working_dir,
shell=watcher.shell,
uid=watcher.uid,
gid=watcher.gid,
env=watcher.env,
rlimits=watcher.rlimits,
spawn=False,
executable=watcher.executable,
use_fds=watcher.use_sockets,
watcher=watcher,
)
fd = watcher._get_sockets_fds()["web"]
formatted_args = process.format_args()
self.assertEquals(formatted_args, ["foo", "--fd", str(fd)])
示例11: add_watcher
def add_watcher(self, name, cmd):
"""Adds a watcher.
Options:
- **name**: name of the watcher to add
- **cmd**: command to run.
"""
if name in self._watchers_names:
raise AlreadyExist("%r already exist" % name)
if not name:
return ValueError("command name shouldn't be empty")
watcher = Watcher(name, cmd, stopped=True)
watcher.initialize(self.evpub_socket)
self.watchers.append(watcher)
self._watchers_names[watcher.name.lower()] = watcher
示例12: get_arbiter
def get_arbiter(watchers, controller='tcp://127.0.0.1:5555',
pubsub_endpoint='tcp://127.0.0.1:5556',
env=None, name=None, context=None,
check_flapping=True, background=False):
"""Creates a Arbiter and a single watcher in it.
Options:
- **watchers** -- a list of watchers. A watcher in that case is a
dict containing:
- **name** -- the name of the watcher (default: None)
- **cmd** -- the command line used to run the Watcher.
- **numprocesses** -- the number of flies to spawn (default: 1).
- **warmup_delay** -- the delay in seconds between two spawns
(default: 0)
- **shell** -- if True, the flies are run in the shell
(default: False)
- **working_dir** - the working dir for the processes (default: None)
- **uid** -- the user id used to run the flies (default: None)
- **gid** -- the group id used to run the flies (default: None)
- **env** -- the environment passed to the flies (default: None)
- **controller** -- the zmq entry point (default: 'tcp://127.0.0.1:5555')
- **pubsub_endpoint** -- the zmq entry point for the pubsub
(default: 'tcp://127.0.0.1:5556')
- **context** -- the zmq context (default: None)
- **check_flapping** -- If True, the flapping detection is activated.
(default:True)
- **background** -- If True, the arbiter is launched in a thread in the
background (default: False)
"""
from circus.watcher import Watcher
if background:
from circus.arbiter import ThreadedArbiter as Arbiter # NOQA
else:
from circus.arbiter import Arbiter # NOQA
_watchers = []
for watcher in watchers:
cmd = watcher['cmd']
name = watcher.get('name', os.path.basename(cmd.split()[0]))
watcher = Watcher(name,
cmd,
watcher.get('numprocesses', 1),
working_dir=watcher.get('working_dir'),
warmup_delay=float(watcher.get('warmup_delay', '0')),
shell=watcher.get('shell'),
uid=watcher.get('uid'),
gid=watcher.get('gid'),
env=watcher.get('env'))
_watchers.append(watcher)
return Arbiter(_watchers, controller, pubsub_endpoint, context=context,
check_flapping=check_flapping)
示例13: add_watcher
def add_watcher(self, name, cmd, **kw):
"""Adds a watcher.
Options:
- **name**: name of the watcher to add
- **cmd**: command to run.
- all other options defined in the Watcher constructor.
"""
if name in self._watchers_names:
raise AlreadyExist("%r already exist" % name)
if not name:
return ValueError("command name shouldn't be empty")
watcher = Watcher(name, cmd, **kw)
watcher.initialize(self.evpub_socket, self.sockets)
self.watchers.append(watcher)
self._watchers_names[watcher.name.lower()] = watcher
return watcher
示例14: load
def load(watcher_conf):
watcher = Watcher.load_from_config(watcher_conf.copy())
process = Process(watcher._nextwid, watcher.cmd,
args=watcher.args,
working_dir=watcher.working_dir,
shell=watcher.shell, uid=watcher.uid,
gid=watcher.gid, env=watcher.env,
rlimits=watcher.rlimits, spawn=False,
executable=watcher.executable,
use_fds=watcher.use_sockets,
watcher=watcher)
return process.format_args()
示例15: load_from_config
def load_from_config(cls, config_file, loop=None):
cfg = get_config(config_file)
watchers = []
for watcher in cfg.get("watchers", []):
watchers.append(Watcher.load_from_config(watcher))
sockets = []
for socket in cfg.get("sockets", []):
sockets.append(CircusSocket.load_from_config(socket))
httpd = cfg.get("httpd", False)
if httpd:
# controlling that we have what it takes to run the web UI
# if something is missing this will tell the user
try:
import circusweb # NOQA
except ImportError:
logger.error("You need to install circus-web")
sys.exit(1)
# creating arbiter
arbiter = cls(
watchers,
cfg["endpoint"],
cfg["pubsub_endpoint"],
check_delay=cfg.get("check_delay", 1.0),
prereload_fn=cfg.get("prereload_fn"),
statsd=cfg.get("statsd", False),
stats_endpoint=cfg.get("stats_endpoint"),
multicast_endpoint=cfg.get("multicast_endpoint"),
plugins=cfg.get("plugins"),
sockets=sockets,
warmup_delay=cfg.get("warmup_delay", 0),
httpd=httpd,
loop=loop,
httpd_host=cfg.get("httpd_host", "localhost"),
httpd_port=cfg.get("httpd_port", 8080),
debug=cfg.get("debug", False),
ssh_server=cfg.get("ssh_server", None),
pidfile=cfg.get("pidfile", None),
loglevel=cfg.get("loglevel", None),
logoutput=cfg.get("logoutput", None),
fqdn_prefix=cfg.get("fqdn_prefix", None),
umask=cfg["umask"],
)
# store the cfg which will be used, so it can be used later
# for checking if the cfg has been changed
arbiter._cfg = cls.get_arbiter_config(cfg)
arbiter.config_file = config_file
return arbiter