本文整理汇总了Python中asyncio.SafeChildWatcher方法的典型用法代码示例。如果您正苦于以下问题:Python asyncio.SafeChildWatcher方法的具体用法?Python asyncio.SafeChildWatcher怎么用?Python asyncio.SafeChildWatcher使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类asyncio
的用法示例。
在下文中一共展示了asyncio.SafeChildWatcher方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_get_child_watcher_thread
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import SafeChildWatcher [as 别名]
def test_get_child_watcher_thread(self):
def f():
policy.set_event_loop(policy.new_event_loop())
self.assertIsInstance(policy.get_event_loop(),
asyncio.AbstractEventLoop)
watcher = policy.get_child_watcher()
self.assertIsInstance(watcher, asyncio.SafeChildWatcher)
self.assertIsNone(watcher._loop)
policy.get_event_loop().close()
policy = self.create_policy()
th = threading.Thread(target=f)
th.start()
th.join()
示例2: setup_test_loop
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import SafeChildWatcher [as 别名]
def setup_test_loop(loop_factory=asyncio.new_event_loop):
"""Create and return an asyncio.BaseEventLoop instance.
The caller should also call teardown_test_loop, once they are done
with the loop.
"""
loop = loop_factory()
asyncio.set_event_loop(loop)
if sys.platform != "win32":
policy = asyncio.get_event_loop_policy()
watcher = asyncio.SafeChildWatcher()
watcher.attach_loop(loop)
policy.set_child_watcher(watcher)
return loop
示例3: test_read_all_from_pipe_reader
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import SafeChildWatcher [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')
示例4: setUp
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import SafeChildWatcher [as 别名]
def setUp(self):
super().setUp()
watcher = asyncio.SafeChildWatcher()
watcher.attach_loop(self.loop)
asyncio.set_child_watcher(watcher)
示例5: waitpid
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import SafeChildWatcher [as 别名]
def waitpid(self, pid, flags):
if isinstance(self.watcher, asyncio.SafeChildWatcher) or pid != -1:
self.assertGreater(pid, 0)
try:
if pid < 0:
return self.zombies.popitem()
else:
return pid, self.zombies.pop(pid)
except KeyError:
pass
if self.running:
return 0, 0
else:
raise ChildProcessError()
示例6: create_watcher
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import SafeChildWatcher [as 别名]
def create_watcher(self):
return asyncio.SafeChildWatcher()
示例7: test_get_child_watcher
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import SafeChildWatcher [as 别名]
def test_get_child_watcher(self):
policy = self.create_policy()
self.assertIsNone(policy._watcher)
watcher = policy.get_child_watcher()
self.assertIsInstance(watcher, asyncio.SafeChildWatcher)
self.assertIs(policy._watcher, watcher)
self.assertIs(watcher, policy.get_child_watcher())
self.assertIsNone(watcher._loop)
示例8: install
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import SafeChildWatcher [as 别名]
def install(gtk=False):
"""Set the default event loop policy.
Call this as early as possible to ensure everything has a reference to the
correct event loop.
Set ``gtk`` to True if you intend to use Gtk in your application.
If ``gtk`` is True and Gtk is not available, will raise `ValueError`.
Note that this class performs some monkey patching of asyncio to ensure
correct functionality.
"""
if gtk:
from .gtk import GtkEventLoopPolicy
policy = GtkEventLoopPolicy()
else:
from .glib_events import GLibEventLoopPolicy
policy = GLibEventLoopPolicy()
# There are some libraries that use SafeChildWatcher directly (which is
# completely reasonable), so we have to ensure that it is our version. I'm
# sorry, I know this isn't great but it's basically the best that we have.
from .glib_events import GLibChildWatcher
asyncio.SafeChildWatcher = GLibChildWatcher
asyncio.set_event_loop_policy(policy)
示例9: _check_unix
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import SafeChildWatcher [as 别名]
def _check_unix(self):
if not hasattr(asyncio, "SafeChildWatcher"):
raise NotImplementedError
示例10: get_child_watcher
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import SafeChildWatcher [as 别名]
def get_child_watcher(self):
self._check_unix()
if self.loop:
if self.watcher is None:
self.watcher = asyncio.SafeChildWatcher()
self.watcher.attach_loop(self.loop)
return self.watcher
else:
return self.original_policy.get_child_watcher()
示例11: test_read_all_from_pipe_reader
# 需要导入模块: import asyncio [as 别名]
# 或者: from asyncio import SafeChildWatcher [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')