本文整理汇总了Python中asyncio.SubprocessProtocol方法的典型用法代码示例。如果您正苦于以下问题:Python asyncio.SubprocessProtocol方法的具体用法?Python asyncio.SubprocessProtocol怎么用?Python asyncio.SubprocessProtocol使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类asyncio
的用法示例。
在下文中一共展示了asyncio.SubprocessProtocol方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __init__
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import SubprocessProtocol [as 别名]
def __init__(self, moler_connection, cmd=None, first_prompt=None, dimensions=(100, 300), logger=None):
"""Initialization of Terminal connection."""
super(AsyncioTerminal, self).__init__(moler_connection=moler_connection)
self.moler_connection.how2send = self.send # need to map synchronous methods
# TODO: do we want connection.name?
self.name = moler_connection.name
self.dimensions = dimensions
if cmd is None:
cmd = ['/bin/bash', '--init-file']
self._cmd = self._build_bash_command(cmd)
if first_prompt:
self.prompt = first_prompt
else:
self.prompt = r'^moler_bash#'
if logger: # overwrite base class logger
self.logger = logger
self._shell_operable = None
self._transport = None
self._protocol = None # derived from asyncio.SubprocessProtocol
self.read_buffer = ''
示例2: test_cancel_post_init
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import SubprocessProtocol [as 别名]
def test_cancel_post_init(self):
@asyncio.coroutine
def cancel_make_transport():
coro = self.loop.subprocess_exec(asyncio.SubprocessProtocol,
*PROGRAM_BLOCKED)
task = self.loop.create_task(coro)
self.loop.call_soon(task.cancel)
try:
yield from task
except asyncio.CancelledError:
pass
# ignore the log:
# "Exception during subprocess creation, kill the subprocess"
with test_utils.disable_logger():
self.loop.run_until_complete(cancel_make_transport())
test_utils.run_briefly(self.loop)
示例3: test_subprocess_shell_invalid_args
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import SubprocessProtocol [as 别名]
def test_subprocess_shell_invalid_args(self):
@asyncio.coroutine
def connect(cmd=None, **kwds):
if not cmd:
cmd = 'pwd'
yield from self.loop.subprocess_shell(
asyncio.SubprocessProtocol,
cmd, **kwds)
with self.assertRaises(ValueError):
self.loop.run_until_complete(connect(['ls', '-l']))
with self.assertRaises(ValueError):
self.loop.run_until_complete(connect(universal_newlines=True))
with self.assertRaises(ValueError):
self.loop.run_until_complete(connect(bufsize=4096))
with self.assertRaises(ValueError):
self.loop.run_until_complete(connect(shell=False))
示例4: test_subprocess_shell_invalid_args
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import SubprocessProtocol [as 别名]
def test_subprocess_shell_invalid_args(self):
# expected a string, not an int or a list
self.assertRaises(TypeError,
self.loop.run_until_complete, self.loop.subprocess_shell,
asyncio.SubprocessProtocol, 123)
self.assertRaises(TypeError,
self.loop.run_until_complete, self.loop.subprocess_shell,
asyncio.SubprocessProtocol, [sys.executable, '-c', 'pass'])
# universal_newlines, shell, bufsize must not be set
self.assertRaises(TypeError,
self.loop.run_until_complete, self.loop.subprocess_shell,
asyncio.SubprocessProtocol, 'exit 0', universal_newlines=True)
self.assertRaises(TypeError,
self.loop.run_until_complete, self.loop.subprocess_shell,
asyncio.SubprocessProtocol, 'exit 0', shell=True)
self.assertRaises(TypeError,
self.loop.run_until_complete, self.loop.subprocess_shell,
asyncio.SubprocessProtocol, 'exit 0', bufsize=4096)
示例5: test_empty
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import SubprocessProtocol [as 别名]
def test_empty(self):
f = mock.Mock()
p = asyncio.Protocol()
self.assertIsNone(p.connection_made(f))
self.assertIsNone(p.connection_lost(f))
self.assertIsNone(p.data_received(f))
self.assertIsNone(p.eof_received())
dp = asyncio.DatagramProtocol()
self.assertIsNone(dp.connection_made(f))
self.assertIsNone(dp.connection_lost(f))
self.assertIsNone(dp.error_received(f))
self.assertIsNone(dp.datagram_received(f, f))
sp = asyncio.SubprocessProtocol()
self.assertIsNone(sp.connection_made(f))
self.assertIsNone(sp.connection_lost(f))
self.assertIsNone(sp.pipe_data_received(1, f))
self.assertIsNone(sp.pipe_connection_lost(1, f))
self.assertIsNone(sp.process_exited())
示例6: test_cancel_post_init
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import SubprocessProtocol [as 别名]
def test_cancel_post_init(self):
async def cancel_make_transport():
coro = self.loop.subprocess_exec(asyncio.SubprocessProtocol,
*PROGRAM_BLOCKED)
task = self.loop.create_task(coro)
self.loop.call_soon(task.cancel)
try:
await task
except asyncio.CancelledError:
pass
# ignore the log:
# "Exception during subprocess creation, kill the subprocess"
with test_utils.disable_logger():
self.loop.run_until_complete(cancel_make_transport())
test_utils.run_briefly(self.loop)
示例7: process_exited
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import SubprocessProtocol [as 别名]
def process_exited(self):
"""Called when subprocess has exited."""
return_code = self.transport.get_returncode()
self.complete.set_result(return_code)
self.on_process_exited(return_code)
# --- callbacks called by asyncio.SubprocessProtocol API
示例8: _start_local_processors
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import SubprocessProtocol [as 别名]
def _start_local_processors(self, args):
# spawn processors that will connect to our Unix or TCP server
tasks = [
self._loop.subprocess_exec(
asyncio.SubprocessProtocol,
'distex_proc', *(str(arg) for arg in args),
stdout=None, stderr=None)
for _ in range(self._num_workers)]
self._procs = await asyncio.gather(*tasks)
self._total_workers += self._num_workers
示例9: test_close_kill_running
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import SubprocessProtocol [as 别名]
def test_close_kill_running(self):
@asyncio.coroutine
def kill_running():
create = self.loop.subprocess_exec(asyncio.SubprocessProtocol,
*PROGRAM_BLOCKED)
transport, protocol = yield from create
kill_called = False
def kill():
nonlocal kill_called
kill_called = True
orig_kill()
proc = transport.get_extra_info('subprocess')
orig_kill = proc.kill
proc.kill = kill
returncode = transport.get_returncode()
transport.close()
yield from transport._wait()
return (returncode, kill_called)
# Ignore "Close running child process: kill ..." log
with test_utils.disable_logger():
returncode, killed = self.loop.run_until_complete(kill_running())
self.assertIsNone(returncode)
# transport.close() must kill the process if it is still running
self.assertTrue(killed)
test_utils.run_briefly(self.loop)
示例10: test_close_dont_kill_finished
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import SubprocessProtocol [as 别名]
def test_close_dont_kill_finished(self):
@asyncio.coroutine
def kill_running():
create = self.loop.subprocess_exec(asyncio.SubprocessProtocol,
*PROGRAM_BLOCKED)
transport, protocol = yield from create
proc = transport.get_extra_info('subprocess')
# kill the process (but asyncio is not notified immediatly)
proc.kill()
proc.wait()
proc.kill = mock.Mock()
proc_returncode = proc.poll()
transport_returncode = transport.get_returncode()
transport.close()
return (proc_returncode, transport_returncode, proc.kill.called)
# Ignore "Unknown child process pid ..." log of SafeChildWatcher,
# emitted because the test already consumes the exit status:
# proc.wait()
with test_utils.disable_logger():
result = self.loop.run_until_complete(kill_running())
test_utils.run_briefly(self.loop)
proc_returncode, transport_return_code, killed = result
self.assertIsNotNone(proc_returncode)
self.assertIsNone(transport_return_code)
# transport.close() must not kill the process if it finished, even if
# the transport was not notified yet
self.assertFalse(killed)
示例11: test_subprocess_exec_invalid_args
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import SubprocessProtocol [as 别名]
def test_subprocess_exec_invalid_args(self):
@asyncio.coroutine
def connect(**kwds):
yield from self.loop.subprocess_exec(
asyncio.SubprocessProtocol,
'pwd', **kwds)
with self.assertRaises(ValueError):
self.loop.run_until_complete(connect(universal_newlines=True))
with self.assertRaises(ValueError):
self.loop.run_until_complete(connect(bufsize=4096))
with self.assertRaises(ValueError):
self.loop.run_until_complete(connect(shell=True))
示例12: test_subprocess_exec_invalid_args
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import SubprocessProtocol [as 别名]
def test_subprocess_exec_invalid_args(self):
args = [sys.executable, '-c', 'pass']
# missing program parameter (empty args)
self.assertRaises(TypeError,
self.loop.run_until_complete, self.loop.subprocess_exec,
asyncio.SubprocessProtocol)
# expected multiple arguments, not a list
self.assertRaises(TypeError,
self.loop.run_until_complete, self.loop.subprocess_exec,
asyncio.SubprocessProtocol, args)
# program arguments must be strings, not int
self.assertRaises(TypeError,
self.loop.run_until_complete, self.loop.subprocess_exec,
asyncio.SubprocessProtocol, sys.executable, 123)
# universal_newlines, shell, bufsize must not be set
self.assertRaises(TypeError,
self.loop.run_until_complete, self.loop.subprocess_exec,
asyncio.SubprocessProtocol, *args, universal_newlines=True)
self.assertRaises(TypeError,
self.loop.run_until_complete, self.loop.subprocess_exec,
asyncio.SubprocessProtocol, *args, shell=True)
self.assertRaises(TypeError,
self.loop.run_until_complete, self.loop.subprocess_exec,
asyncio.SubprocessProtocol, *args, bufsize=4096)
示例13: __init__
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import SubprocessProtocol [as 别名]
def __init__(self):
ProcessProtocol.__init__(self)
asyncio.SubprocessProtocol.__init__(self)
self.boot_future = None
self.exit_future = None
### PUBLIC METHODS ###
示例14: __init__
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import SubprocessProtocol [as 别名]
def __init__(self, stdin=None, stdout=None, stderr=None):
self.stdin = stdin
self.stdout = stdout
self.stderr = stderr
self.complete = asyncio.Future()
asyncio.SubprocessProtocol.__init__(self)
示例15: test_close_dont_kill_finished
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import SubprocessProtocol [as 别名]
def test_close_dont_kill_finished(self):
@asyncio.coroutine
def kill_running():
create = self.loop.subprocess_exec(asyncio.SubprocessProtocol,
*PROGRAM_BLOCKED)
transport, protocol = yield from create
proc = transport.get_extra_info('subprocess')
# kill the process (but asyncio is not notified immediately)
proc.kill()
proc.wait()
proc.kill = mock.Mock()
proc_returncode = proc.poll()
transport_returncode = transport.get_returncode()
transport.close()
return (proc_returncode, transport_returncode, proc.kill.called)
# Ignore "Unknown child process pid ..." log of SafeChildWatcher,
# emitted because the test already consumes the exit status:
# proc.wait()
with test_utils.disable_logger():
result = self.loop.run_until_complete(kill_running())
test_utils.run_briefly(self.loop)
proc_returncode, transport_return_code, killed = result
self.assertIsNotNone(proc_returncode)
self.assertIsNone(transport_return_code)
# transport.close() must not kill the process if it finished, even if
# the transport was not notified yet
self.assertFalse(killed)
# Unlike SafeChildWatcher, FastChildWatcher does not pop the
# callbacks if waitpid() is called elsewhere. Let's clear them
# manually to avoid a warning when the watcher is detached.
if sys.platform != 'win32' and \
isinstance(self, SubprocessFastWatcherTests):
asyncio.get_child_watcher()._callbacks.clear()