本文整理汇总了Python中asyncio.set_child_watcher方法的典型用法代码示例。如果您正苦于以下问题:Python asyncio.set_child_watcher方法的具体用法?Python asyncio.set_child_watcher怎么用?Python asyncio.set_child_watcher使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类asyncio
的用法示例。
在下文中一共展示了asyncio.set_child_watcher方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_read_all_from_pipe_reader
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import set_child_watcher [as 别名]
def test_read_all_from_pipe_reader(self):
# See asyncio issue 168. This test is derived from the example
# subprocess_attach_read_pipe.py, but we configure the
# StreamReader's limit so that twice it is less than the size
# of the data writter. Also we must explicitly attach a child
# watcher to the event loop.
code = """\
import os, sys
fd = int(sys.argv[1])
os.write(fd, b'data')
os.close(fd)
"""
rfd, wfd = os.pipe()
args = [sys.executable, '-c', code, str(wfd)]
pipe = open(rfd, 'rb', 0)
reader = asyncio.StreamReader(loop=self.loop, limit=1)
protocol = asyncio.StreamReaderProtocol(reader, loop=self.loop)
transport, _ = self.loop.run_until_complete(
self.loop.connect_read_pipe(lambda: protocol, pipe))
watcher = asyncio.SafeChildWatcher()
watcher.attach_loop(self.loop)
try:
asyncio.set_child_watcher(watcher)
create = asyncio.create_subprocess_exec(*args,
pass_fds={wfd},
loop=self.loop)
proc = self.loop.run_until_complete(create)
self.loop.run_until_complete(proc.wait())
finally:
asyncio.set_child_watcher(None)
os.close(wfd)
data = self.loop.run_until_complete(reader.read(-1))
self.assertEqual(data, b'data')
示例2: setUp
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import set_child_watcher [as 别名]
def setUp(self):
super().setUp()
watcher = asyncio.SafeChildWatcher()
watcher.attach_loop(self.loop)
asyncio.set_child_watcher(watcher)
示例3: tearDown
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import set_child_watcher [as 别名]
def tearDown(self):
asyncio.set_child_watcher(None)
super().tearDown()
示例4: test_event_loop_policy
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import set_child_watcher [as 别名]
def test_event_loop_policy(self):
policy = asyncio.AbstractEventLoopPolicy()
self.assertRaises(NotImplementedError, policy.get_event_loop)
self.assertRaises(NotImplementedError, policy.set_event_loop, object())
self.assertRaises(NotImplementedError, policy.new_event_loop)
self.assertRaises(NotImplementedError, policy.get_child_watcher)
self.assertRaises(NotImplementedError, policy.set_child_watcher,
object())
示例5: main
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import set_child_watcher [as 别名]
def main(cls, loop=None, argv=sys.argv):
"""
Runs cli commands in asyncio loop and outputs in appropriate format
"""
if loop is None:
loop = asyncio.get_event_loop()
# In Python 3.8 ThreadedChildWatcher becomes the default which
# should work fine for us. However, in Python 3.7 SafeChildWatcher
# is the default and may cause BlockingIOErrors when many
# subprocesses are created
# https://docs.python.org/3/library/asyncio-policy.html#asyncio.FastChildWatcher
if (
sys.version_info.major == 3
and sys.version_info.minor == 7
and sys.platform != "win32"
):
watcher = asyncio.FastChildWatcher()
asyncio.set_child_watcher(watcher)
watcher.attach_loop(loop)
result = None
try:
result = loop.run_until_complete(cls._main(*argv[1:]))
except KeyboardInterrupt: # pragma: no cover
pass # pragma: no cover
loop.run_until_complete(loop.shutdown_asyncgens())
loop.close()
示例6: test_read_all_from_pipe_reader
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import set_child_watcher [as 别名]
def test_read_all_from_pipe_reader(self):
# See Tulip issue 168. This test is derived from the example
# subprocess_attach_read_pipe.py, but we configure the
# StreamReader's limit so that twice it is less than the size
# of the data writter. Also we must explicitly attach a child
# watcher to the event loop.
code = """\
import os, sys
fd = int(sys.argv[1])
os.write(fd, b'data')
os.close(fd)
"""
rfd, wfd = os.pipe()
args = [sys.executable, '-c', code, str(wfd)]
pipe = open(rfd, 'rb', 0)
reader = asyncio.StreamReader(loop=self.loop, limit=1)
protocol = asyncio.StreamReaderProtocol(reader, loop=self.loop)
transport, _ = self.loop.run_until_complete(
self.loop.connect_read_pipe(lambda: protocol, pipe))
watcher = asyncio.SafeChildWatcher()
watcher.attach_loop(self.loop)
try:
asyncio.set_child_watcher(watcher)
create = asyncio.create_subprocess_exec(*args,
pass_fds={wfd},
loop=self.loop)
proc = self.loop.run_until_complete(create)
self.loop.run_until_complete(proc.wait())
finally:
asyncio.set_child_watcher(None)
os.close(wfd)
data = self.loop.run_until_complete(reader.read(-1))
self.assertEqual(data, b'data')