Python concurrent.futures.CancelledError() Examples
The following are 30
code examples of concurrent.futures.CancelledError().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
concurrent.futures
, or try the search function
.
Example #1
Source File: base_events.py From odoo13-x64 with GNU General Public License v3.0 | 6 votes |
def serve_forever(self): if self._serving_forever_fut is not None: raise RuntimeError( f'server {self!r} is already being awaited on serve_forever()') if self._sockets is None: raise RuntimeError(f'server {self!r} is closed') self._start_serving() self._serving_forever_fut = self._loop.create_future() try: await self._serving_forever_fut except futures.CancelledError: try: self.close() await self.wait_closed() finally: raise finally: self._serving_forever_fut = None
Example #2
Source File: locks.py From teleport with Apache License 2.0 | 6 votes |
def wait(self, timeout=None): """Block until the internal flag is true. Returns a Future, which raises `tornado.util.TimeoutError` after a timeout. """ fut = Future() if self._value: fut.set_result(None) return fut self._waiters.add(fut) fut.add_done_callback(lambda fut: self._waiters.remove(fut)) if timeout is None: return fut else: timeout_fut = gen.with_timeout(timeout, fut, quiet_exceptions=(CancelledError,)) # This is a slightly clumsy workaround for the fact that # gen.with_timeout doesn't cancel its futures. Cancelling # fut will remove it from the waiters list. timeout_fut.add_done_callback(lambda tf: fut.cancel() if not fut.done() else None) return timeout_fut
Example #3
Source File: locks.py From teleport with Apache License 2.0 | 6 votes |
def wait(self, timeout: Union[float, datetime.timedelta] = None) -> Awaitable[None]: """Block until the internal flag is true. Returns an awaitable, which raises `tornado.util.TimeoutError` after a timeout. """ fut = Future() # type: Future[None] if self._value: fut.set_result(None) return fut self._waiters.add(fut) fut.add_done_callback(lambda fut: self._waiters.remove(fut)) if timeout is None: return fut else: timeout_fut = gen.with_timeout( timeout, fut, quiet_exceptions=(CancelledError,) ) # This is a slightly clumsy workaround for the fact that # gen.with_timeout doesn't cancel its futures. Cancelling # fut will remove it from the waiters list. timeout_fut.add_done_callback( lambda tf: fut.cancel() if not fut.done() else None ) return timeout_fut
Example #4
Source File: segmented.py From streamlink with BSD 2-Clause "Simplified" License | 6 votes |
def run(self): while not self.closed: try: segment, future = self.futures.get(block=True, timeout=0.5) except queue.Empty: continue # End of stream if future is None: break while not self.closed: try: result = future.result(timeout=0.5) except futures.TimeoutError: continue except futures.CancelledError: break if result is not None: self.write(segment, result) break self.close()
Example #5
Source File: locks.py From teleport with Apache License 2.0 | 6 votes |
def wait(self, timeout: Union[float, datetime.timedelta] = None) -> Awaitable[None]: """Block until the internal flag is true. Returns an awaitable, which raises `tornado.util.TimeoutError` after a timeout. """ fut = Future() # type: Future[None] if self._value: fut.set_result(None) return fut self._waiters.add(fut) fut.add_done_callback(lambda fut: self._waiters.remove(fut)) if timeout is None: return fut else: timeout_fut = gen.with_timeout( timeout, fut, quiet_exceptions=(CancelledError,) ) # This is a slightly clumsy workaround for the fact that # gen.with_timeout doesn't cancel its futures. Cancelling # fut will remove it from the waiters list. timeout_fut.add_done_callback( lambda tf: fut.cancel() if not fut.done() else None ) return timeout_fut
Example #6
Source File: auth.py From mautrix-hangouts with GNU Affero General Public License v3.0 | 6 votes |
def _receive_credential(self, result_type: CredentialType) -> Optional[str]: if self.cancelled: return None self.current_status = { "next_step": result_type.value, } if result_type == CredentialType.AUTHORIZATION: self.current_status["manual_auth_url"] = make_login_url(self.device_name) try: return self.queue.send_to_async(self.current_status, lambda: self._set_expecting(result_type)) except futures.TimeoutError: self.cancel() return None except futures.CancelledError: return None
Example #7
Source File: _test_asyncio.py From vnpy_crypto with MIT License | 6 votes |
def test_recv_json_cancelled(self): @asyncio.coroutine def test(): a, b = self.create_bound_pair(zmq.PUSH, zmq.PULL) f = b.recv_json() assert not f.done() f.cancel() # cycle eventloop to allow cancel events to fire yield from asyncio.sleep(0) obj = dict(a=5) yield from a.send_json(obj) with pytest.raises(CancelledError): recvd = yield from f assert f.done() # give it a chance to incorrectly consume the event events = yield from b.poll(timeout=5) assert events yield from asyncio.sleep(0) # make sure cancelled recv didn't eat up event f = b.recv_json() recvd = yield from asyncio.wait_for(f, timeout=5) assert recvd == obj self.loop.run_until_complete(test())
Example #8
Source File: test_server.py From eva with Apache License 2.0 | 6 votes |
def test_server(self): host = "0.0.0.0" port = 5489 socket_timeout = 60 def timeout_server(): # need a more robust mechanism for when to cancel the future time.sleep(2) self.stop_server_future.cancel() thread = threading.Thread(target=timeout_server) thread.daemon = True thread.start() with self.assertRaises(CancelledError): start_server(host=host, port=port, loop=self.loop, socket_timeout=socket_timeout, stop_server_future=self.stop_server_future)
Example #9
Source File: locks.py From opendevops with GNU General Public License v3.0 | 6 votes |
def wait(self, timeout: Union[float, datetime.timedelta] = None) -> Awaitable[None]: """Block until the internal flag is true. Returns an awaitable, which raises `tornado.util.TimeoutError` after a timeout. """ fut = Future() # type: Future[None] if self._value: fut.set_result(None) return fut self._waiters.add(fut) fut.add_done_callback(lambda fut: self._waiters.remove(fut)) if timeout is None: return fut else: timeout_fut = gen.with_timeout( timeout, fut, quiet_exceptions=(CancelledError,) ) # This is a slightly clumsy workaround for the fact that # gen.with_timeout doesn't cancel its futures. Cancelling # fut will remove it from the waiters list. timeout_fut.add_done_callback( lambda tf: fut.cancel() if not fut.done() else None ) return timeout_fut
Example #10
Source File: worker.py From biggraphite with Apache License 2.0 | 6 votes |
def submit(self, label, command, opts): """Submit a bgutil command to run it asynchronously.""" task = BgUtilTask(label, datetime.now()) self.tasks.append(task) def _done_callback(f): try: result = f.result() task.completed(result) except futures.CancelledError as e: task.cancelled(e) except futures.TimeoutError as e: task.timed_out(e) except Exception as e: task.failed(e) future = self._executor.submit( self._wrap_command, task, context.accessor, command, opts ) task.submitted() future.add_done_callback(_done_callback)
Example #11
Source File: FICSConnection.py From pychess with GNU General Public License v3.0 | 6 votes |
def start(self): try: if not self.isConnected(): await self._connect() while self.isConnected(): await self.client.parse() except CancelledError: pass except Exception as err: exc_type, exc_value, exc_traceback = sys.exc_info() traceback.print_exception(exc_type, exc_value, exc_traceback) log.info("FICSConnection.run: %s" % repr(err), extra={"task": (self.host, "raw")}) self.close() if isinstance(err, (IOError, LogOnException, EOFError, socket.error, socket.gaierror, socket.herror)): self.emit("error", err) else: raise finally: if isinstance(self, FICSMainConnection): self.emit("disconnected")
Example #12
Source File: interconnect.py From sawtooth-core with Apache License 2.0 | 6 votes |
def _do_heartbeat(self): while True: try: if self._socket.getsockopt(zmq.TYPE) == zmq.ROUTER: yield from self._do_router_heartbeat() elif self._socket.getsockopt(zmq.TYPE) == zmq.DEALER: yield from self._do_dealer_heartbeat() yield from asyncio.sleep(self._heartbeat_interval, loop=self._event_loop) except CancelledError: # pylint: disable=try-except-raise # The concurrent.futures.CancelledError is caught by asyncio # when the Task associated with the coroutine is cancelled. # The raise is required to stop this component. raise except Exception as e: # pylint: disable=broad-except LOGGER.exception( "An error occurred while sending heartbeat: %s", e)
Example #13
Source File: auth.py From mautrix-hangouts with GNU Affero General Public License v3.0 | 6 votes |
def start_login(self, request: web.Request) -> web.Response: user_id = self.verify_token(request) manual = request.query.get("manual") if manual and (manual == "1" or manual.lower() == "true"): manual = True else: manual = False user = u.User.get_by_mxid(user_id) if user.client: return web.json_response({ "status": "success", "name": await user.name_future, }) try: return web.json_response(self.ongoing[user.mxid].current_status) except KeyError: pass login = WebCredentialsPrompt(self, user, manual, self.device_name, self.loop) self.ongoing[user.mxid] = login try: return web.json_response(await login.start()) except asyncio.CancelledError: raise ErrorResponse(410, "Login cancelled", "HANGOUTS_LOGIN_CANCELLED")
Example #14
Source File: _test_asyncio.py From pySINDy with MIT License | 6 votes |
def test_recv_json_cancelled(self): @asyncio.coroutine def test(): a, b = self.create_bound_pair(zmq.PUSH, zmq.PULL) f = b.recv_json() assert not f.done() f.cancel() # cycle eventloop to allow cancel events to fire yield from asyncio.sleep(0) obj = dict(a=5) yield from a.send_json(obj) with pytest.raises(CancelledError): recvd = yield from f assert f.done() # give it a chance to incorrectly consume the event events = yield from b.poll(timeout=5) assert events yield from asyncio.sleep(0) # make sure cancelled recv didn't eat up event f = b.recv_json() recvd = yield from asyncio.wait_for(f, timeout=5) assert recvd == obj self.loop.run_until_complete(test())
Example #15
Source File: locks.py From pySINDy with MIT License | 6 votes |
def wait(self, timeout=None): """Block until the internal flag is true. Returns a Future, which raises `tornado.util.TimeoutError` after a timeout. """ fut = Future() if self._value: fut.set_result(None) return fut self._waiters.add(fut) fut.add_done_callback(lambda fut: self._waiters.remove(fut)) if timeout is None: return fut else: timeout_fut = gen.with_timeout(timeout, fut, quiet_exceptions=(CancelledError,)) # This is a slightly clumsy workaround for the fact that # gen.with_timeout doesn't cancel its futures. Cancelling # fut will remove it from the waiters list. timeout_fut.add_done_callback(lambda tf: fut.cancel() if not fut.done() else None) return timeout_fut
Example #16
Source File: base_events.py From Imogen with MIT License | 6 votes |
def serve_forever(self): if self._serving_forever_fut is not None: raise RuntimeError( f'server {self!r} is already being awaited on serve_forever()') if self._sockets is None: raise RuntimeError(f'server {self!r} is closed') self._start_serving() self._serving_forever_fut = self._loop.create_future() try: await self._serving_forever_fut except futures.CancelledError: try: self.close() await self.wait_closed() finally: raise finally: self._serving_forever_fut = None
Example #17
Source File: websocket_server.py From Decentralized-Internet with MIT License | 5 votes |
def websocket_handler(request): """Handle a new socket connection.""" logger.debug('New websocket connection.') websocket = web.WebSocketResponse() yield from websocket.prepare(request) uuid = uuid4() request.app['dispatcher'].subscribe(uuid, websocket) while True: # Consume input buffer try: msg = yield from websocket.receive() except RuntimeError as e: logger.debug('Websocket exception: %s', str(e)) break except CancelledError: logger.debug('Websocket closed') break if msg.type == aiohttp.WSMsgType.CLOSED: logger.debug('Websocket closed') break elif msg.type == aiohttp.WSMsgType.ERROR: logger.debug('Websocket exception: %s', websocket.exception()) break request.app['dispatcher'].unsubscribe(uuid) return websocket
Example #18
Source File: aio_client.py From sofa-bolt-python with Apache License 2.0 | 5 votes |
def invoke_sync(self, interface, method, content, *, spanctx, timeout_ms, **headers): """blocking call to interface, returns responsepkg.content(as bytes)""" assert isinstance(timeout_ms, (int, float)) header = SofaHeader.build_header(spanctx, interface, method, **headers) pkg = BoltRequest.new_request(header, content, timeout_ms=timeout_ms) fut = asyncio.run_coroutine_threadsafe(self.invoke(pkg), loop=self._loop) try: ret = fut.result(timeout=timeout_ms / 1000) except (TimeoutError, CancelledError) as e: logger.error("call to [{}:{}] timeout/cancelled. {}".format(interface, method, e)) raise return ret.content
Example #19
Source File: tasks.py From Project-New-Reign---Nemesis-Main with GNU General Public License v3.0 | 5 votes |
def cancel(self): """Request that this task cancel itself. This arranges for a CancelledError to be thrown into the wrapped coroutine on the next cycle through the event loop. The coroutine then has a chance to clean up or even deny the request using try/except/finally. Unlike Future.cancel, this does not guarantee that the task will be cancelled: the exception might be caught and acted upon, delaying cancellation of the task or preventing cancellation completely. The task may also return a value or raise a different exception. Immediately after this method is called, Task.cancelled() will not return True (unless the task was already cancelled). A task will be marked as cancelled when the wrapped coroutine terminates with a CancelledError exception (even if cancel() was not called). """ self._log_traceback = False if self.done(): return False if self._fut_waiter is not None: if self._fut_waiter.cancel(): # Leave self._fut_waiter; it may be a Task that # catches and ignores the cancellation so we may have # to cancel it again later. return True # It must be the case that self._step is already scheduled. self._must_cancel = True return True
Example #20
Source File: test_future.py From lahja with MIT License | 5 votes |
def test_trio_future_cancelled(): fut = Future() async def do_set(): fut.cancel() async with trio.open_nursery() as nursery: nursery.start_soon(do_set) with pytest.raises(CancelledError): await fut
Example #21
Source File: websocket_server.py From Decentralized-Internet with MIT License | 5 votes |
def websocket_handler(request): """Handle a new socket connection.""" logger.debug('New websocket connection.') websocket = web.WebSocketResponse() yield from websocket.prepare(request) uuid = uuid4() request.app['dispatcher'].subscribe(uuid, websocket) while True: # Consume input buffer try: msg = yield from websocket.receive() except RuntimeError as e: logger.debug('Websocket exception: %s', str(e)) break except CancelledError: logger.debug('Websocket closed') break if msg.type == aiohttp.WSMsgType.CLOSED: logger.debug('Websocket closed') break elif msg.type == aiohttp.WSMsgType.ERROR: logger.debug('Websocket exception: %s', websocket.exception()) break request.app['dispatcher'].unsubscribe(uuid) return websocket
Example #22
Source File: aio_client.py From sofa-bolt-python with Apache License 2.0 | 5 votes |
def _recv_response(self, reader, writer): """ wait response and put it in response_mapping, than notify the invoke coro :param reader: :return: """ while True: pkg = None try: fixed_header_bs = await reader.readexactly(BoltResponse.bolt_header_size()) header = BoltResponse.bolt_header_from_stream(fixed_header_bs) bs = await reader.readexactly(header['class_len'] + header['header_len'] + header['content_len']) pkg = BoltResponse.bolt_content_from_stream(bs, header) if pkg.class_name != BoltResponse.class_name: raise ServerError("wrong class_name:[{}]".format(pkg.class_name)) if pkg.cmdcode == CMDCODE.HEARTBEAT: continue elif pkg.cmdcode == CMDCODE.REQUEST: # raise error, the connection will be dropped raise ServerError("wrong cmdcode:[{}]".format(pkg.cmdcode)) if pkg.respstatus != RESPSTATUS.SUCCESS: raise ServerError.from_statuscode(pkg.respstatus) if pkg.request_id not in self.request_mapping: continue self.response_mapping[pkg.request_id] = pkg except PyboltError as e: logger.error(e) except (asyncio.CancelledError, EOFError, ConnectionResetError) as e: logger.error(e) writer.close() break except Exception: logger.error(traceback.format_exc()) writer.close() break finally: with suppress(AttributeError, KeyError): # wake up the coro event = self.request_mapping.pop(pkg.request_id) event.set()
Example #23
Source File: expectations.py From olympe with BSD 3-Clause "New" or "Revised" License | 5 votes |
def wait(self, _timeout=None): if self._awaited: try: self._future.result(timeout=_timeout) except FutureTimeoutError: self.set_timedout() except FutureCancelledError: self.cancel() return self
Example #24
Source File: tasks.py From ironpython3 with Apache License 2.0 | 5 votes |
def __exit__(self, exc_type, exc_val, exc_tb): if exc_type is futures.CancelledError and self._cancelled: self._cancel_handler = None self._task = None raise futures.TimeoutError self._cancel_handler.cancel() self._cancel_handler = None self._task = None
Example #25
Source File: test_concurrent_futures.py From Project-New-Reign---Nemesis-Main with GNU General Public License v3.0 | 5 votes |
def test_result_with_timeout(self): self.assertRaises(futures.TimeoutError, PENDING_FUTURE.result, timeout=0) self.assertRaises(futures.TimeoutError, RUNNING_FUTURE.result, timeout=0) self.assertRaises(futures.CancelledError, CANCELLED_FUTURE.result, timeout=0) self.assertRaises(futures.CancelledError, CANCELLED_AND_NOTIFIED_FUTURE.result, timeout=0) self.assertRaises(OSError, EXCEPTION_FUTURE.result, timeout=0) self.assertEqual(SUCCESSFUL_FUTURE.result(timeout=0), 42)
Example #26
Source File: tasks.py From ironpython3 with Apache License 2.0 | 5 votes |
def cancel(self): """Request that this task cancel itself. This arranges for a CancelledError to be thrown into the wrapped coroutine on the next cycle through the event loop. The coroutine then has a chance to clean up or even deny the request using try/except/finally. Unlike Future.cancel, this does not guarantee that the task will be cancelled: the exception might be caught and acted upon, delaying cancellation of the task or preventing cancellation completely. The task may also return a value or raise a different exception. Immediately after this method is called, Task.cancelled() will not return True (unless the task was already cancelled). A task will be marked as cancelled when the wrapped coroutine terminates with a CancelledError exception (even if cancel() was not called). """ if self.done(): return False if self._fut_waiter is not None: if self._fut_waiter.cancel(): # Leave self._fut_waiter; it may be a Task that # catches and ignores the cancellation so we may have # to cancel it again later. return True # It must be the case that self._step is already scheduled. self._must_cancel = True return True
Example #27
Source File: test_model.py From civis-python with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_set_model_exception_metadata_exception(): """Tests cases where accessing metadata throws exceptions """ # State "running" prevents termination when the object is created. mock_client = setup_client_mock(1, 2, state='running') class ModelFutureRaiseExc(_model.ModelFuture): def __init__(self, exc, *args, **kwargs): self.__exc = exc super().__init__(*args, **kwargs) @property def metadata(self): raise self.__exc('What a spectacular failure, you say!') # exception types get caught! for exc in [FileNotFoundError, CivisJobFailure, CancelledError]: fut = ModelFutureRaiseExc(exc, 1, 2, client=mock_client) _model.ModelFuture._set_model_exception(fut) with pytest.warns(UserWarning): # The KeyError is caught, but sends a warning fut = ModelFutureRaiseExc(KeyError, 1, 2, client=mock_client) _model.ModelFuture._set_model_exception(fut) fut = ModelFutureRaiseExc(RuntimeError, 1, 2, client=mock_client) with pytest.raises(RuntimeError): _model.ModelFuture._set_model_exception(fut)
Example #28
Source File: test_concurrent_futures.py From Project-New-Reign---Nemesis-Main with GNU General Public License v3.0 | 5 votes |
def test_result_with_cancel(self): # TODO(brian@sweetapp.com): This test is timing dependent. def notification(): # Wait until the main thread is waiting for the result. time.sleep(1) f1.cancel() f1 = create_future(state=PENDING) t = threading.Thread(target=notification) t.start() self.assertRaises(futures.CancelledError, f1.result, timeout=5)
Example #29
Source File: main.py From RulesBot with MIT License | 5 votes |
def handle_exit(client): client.loop.create_task(client.logout()) for t in asyncio.Task.all_tasks(loop=client.loop): if t.done(): t.exception() continue t.cancel() try: client.loop.run_until_complete(asyncio.wait_for(t, 5, loop=client.loop)) t.exception() except (InvalidStateError, TimeoutError, asyncio.CancelledError, futures.CancelledError): pass except: traceback.print_exc()
Example #30
Source File: websocket_server.py From bigchaindb with Apache License 2.0 | 5 votes |
def websocket_handler(request): """Handle a new socket connection.""" logger.debug('New websocket connection.') websocket = web.WebSocketResponse() yield from websocket.prepare(request) uuid = uuid4() request.app['dispatcher'].subscribe(uuid, websocket) while True: # Consume input buffer try: msg = yield from websocket.receive() except RuntimeError as e: logger.debug('Websocket exception: %s', str(e)) break except CancelledError: logger.debug('Websocket closed') break if msg.type == aiohttp.WSMsgType.CLOSED: logger.debug('Websocket closed') break elif msg.type == aiohttp.WSMsgType.ERROR: logger.debug('Websocket exception: %s', websocket.exception()) break request.app['dispatcher'].unsubscribe(uuid) return websocket