| 1234567891011121314151617181920212223242526272829 |
- from __future__ import annotations
- from collections.abc import AsyncIterator
- from contextlib import AbstractContextManager
- from signal import Signals
- from ._eventloop import get_async_backend
- def open_signal_receiver(
- *signals: Signals,
- ) -> AbstractContextManager[AsyncIterator[Signals]]:
- """
- Start receiving operating system signals.
- :param signals: signals to receive (e.g. ``signal.SIGINT``)
- :return: an asynchronous context manager for an asynchronous iterator which yields
- signal numbers
- :raises NoEventLoopError: if no supported asynchronous event loop is running in the
- current thread
- .. warning:: Windows does not support signals natively so it is best to avoid
- relying on this in cross-platform applications.
- .. warning:: On asyncio, this permanently replaces any previous signal handler for
- the given signals, as set via :meth:`~asyncio.loop.add_signal_handler`.
- """
- return get_async_backend().open_signal_receiver(*signals)
|