MCPcopy
hub / github.com/celery/celery / _select

Function _select

celery/concurrency/asynpool.py:150–195  ·  view source on GitHub ↗

Simple wrapper to :class:`~select.select`, using :`~select.poll`. Arguments: readers (Set[Fd]): Set of reader fds to test if readable. writers (Set[Fd]): Set of writer fds to test if writable. err (Set[Fd]): Set of fds to test for error condition. All fd sets passed

(readers=None, writers=None, err=None, timeout=0,
            poll=_select_imp)

Source from the content-addressed store, hash-verified

148
149
150def _select(readers=None, writers=None, err=None, timeout=0,
151 poll=_select_imp):
152 """Simple wrapper to :class:`~select.select`, using :`~select.poll`.
153
154 Arguments:
155 readers (Set[Fd]): Set of reader fds to test if readable.
156 writers (Set[Fd]): Set of writer fds to test if writable.
157 err (Set[Fd]): Set of fds to test for error condition.
158
159 All fd sets passed must be mutable as this function
160 will remove non-working fds from them, this also means
161 the caller must make sure there are still fds in the sets
162 before calling us again.
163
164 Returns:
165 Tuple[Set, Set, Set]: of ``(readable, writable, again)``, where
166 ``readable`` is a set of fds that have data available for read,
167 ``writable`` is a set of fds that's ready to be written to
168 and ``again`` is a flag that if set means the caller must
169 throw away the result and call us again.
170 """
171 readers = set() if readers is None else readers
172 writers = set() if writers is None else writers
173 err = set() if err is None else err
174 try:
175 return poll(readers, writers, err, timeout)
176 except OSError as exc:
177 _errno = exc.errno
178
179 if _errno == errno.EINTR:
180 return set(), set(), 1
181 elif _errno in SELECT_BAD_FD:
182 for fd in readers | writers | err:
183 try:
184 select.select([fd], [], [], 0)
185 except OSError as exc:
186 _errno = exc.errno
187
188 if _errno not in SELECT_BAD_FD:
189 raise
190 readers.discard(fd)
191 writers.discard(fd)
192 err.discard(fd)
193 return set(), set(), 1
194 else:
195 raise
196
197
198def iterate_file_descriptors_safely(fds_iter, source_data,

Callers 3

_flush_writerMethod · 0.85
process_flush_queuesMethod · 0.85
_help_stuff_finishMethod · 0.85

Calls 2

selectMethod · 0.80
discardMethod · 0.45

Tested by

no test coverage detected