当前位置: 首页>>代码示例>>Python>>正文


Python iostream.StreamClosedError方法代码示例

本文整理汇总了Python中tornado.iostream.StreamClosedError方法的典型用法代码示例。如果您正苦于以下问题:Python iostream.StreamClosedError方法的具体用法?Python iostream.StreamClosedError怎么用?Python iostream.StreamClosedError使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在tornado.iostream的用法示例。


在下文中一共展示了iostream.StreamClosedError方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: _handle_exception

# 需要导入模块: from tornado import iostream [as 别名]
# 或者: from tornado.iostream import StreamClosedError [as 别名]
def _handle_exception(self, typ, value, tb):
        if self.final_callback:
            self._remove_timeout()
            if isinstance(value, StreamClosedError):
                if value.real_error is None:
                    value = HTTPError(599, "Stream closed")
                else:
                    value = value.real_error
            self._run_callback(HTTPResponse(self.request, 599, error=value,
                                            request_time=self.io_loop.time() - self.start_time,
                                            ))

            if hasattr(self, "stream"):
                # TODO: this may cause a StreamClosedError to be raised
                # by the connection's Future.  Should we cancel the
                # connection more gracefully?
                self.stream.close()
            return True
        else:
            # If our callback has already been called, we are probably
            # catching an exception that is not caused by us but rather
            # some child of our callback. Rather than drop it on the floor,
            # pass it along, unless it's just the stream being closed.
            return isinstance(value, StreamClosedError) 
开发者ID:tao12345666333,项目名称:tornado-zh,代码行数:26,代码来源:simple_httpclient.py

示例2: write

# 需要导入模块: from tornado import iostream [as 别名]
# 或者: from tornado.iostream import StreamClosedError [as 别名]
def write(self, chunk, callback=None):
        """Implements `.HTTPConnection.write`.

        For backwards compatibility is is allowed but deprecated to
        skip `write_headers` and instead call `write()` with a
        pre-encoded header block.
        """
        future = None
        if self.stream.closed():
            future = self._write_future = Future()
            self._write_future.set_exception(iostream.StreamClosedError())
            self._write_future.exception()
        else:
            if callback is not None:
                self._write_callback = stack_context.wrap(callback)
            else:
                future = self._write_future = Future()
            self._pending_write = self.stream.write(self._format_chunk(chunk))
            self._pending_write.add_done_callback(self._on_write_complete)
        return future 
开发者ID:tao12345666333,项目名称:tornado-zh,代码行数:22,代码来源:http1connection.py

示例3: _server_request_loop

# 需要导入模块: from tornado import iostream [as 别名]
# 或者: from tornado.iostream import StreamClosedError [as 别名]
def _server_request_loop(self, delegate):
        try:
            while True:
                conn = HTTP1Connection(self.stream, False,
                                       self.params, self.context)
                request_delegate = delegate.start_request(self, conn)
                try:
                    ret = yield conn.read_response(request_delegate)
                except (iostream.StreamClosedError,
                        iostream.UnsatisfiableReadError):
                    return
                except _QuietException:
                    # This exception was already logged.
                    conn.close()
                    return
                except Exception:
                    gen_log.error("Uncaught exception", exc_info=True)
                    conn.close()
                    return
                if not ret:
                    return
                yield gen.moment
        finally:
            delegate.on_close(self) 
开发者ID:tao12345666333,项目名称:tornado-zh,代码行数:26,代码来源:http1connection.py

示例4: on_connection_close

# 需要导入模块: from tornado import iostream [as 别名]
# 或者: from tornado.iostream import StreamClosedError [as 别名]
def on_connection_close(self) -> None:
        """Called in async handlers if the client closed the connection.

        Override this to clean up resources associated with
        long-lived connections.  Note that this method is called only if
        the connection was closed during asynchronous processing; if you
        need to do cleanup after every request override `on_finish`
        instead.

        Proxies may keep a connection open for a time (perhaps
        indefinitely) after the client has gone away, so this method
        may not be called promptly after the end user closes their
        connection.
        """
        if _has_stream_request_body(self.__class__):
            if not self.request._body_future.done():
                self.request._body_future.set_exception(iostream.StreamClosedError())
                self.request._body_future.exception() 
开发者ID:opendevops-cn,项目名称:opendevops,代码行数:20,代码来源:web.py

示例5: on_connection_close

# 需要导入模块: from tornado import iostream [as 别名]
# 或者: from tornado.iostream import StreamClosedError [as 别名]
def on_connection_close(self):
        """Called in async handlers if the client closed the connection.

        Override this to clean up resources associated with
        long-lived connections.  Note that this method is called only if
        the connection was closed during asynchronous processing; if you
        need to do cleanup after every request override `on_finish`
        instead.

        Proxies may keep a connection open for a time (perhaps
        indefinitely) after the client has gone away, so this method
        may not be called promptly after the end user closes their
        connection.
        """
        if _has_stream_request_body(self.__class__):
            if not self.request.body.done():
                self.request.body.set_exception(iostream.StreamClosedError())
                self.request.body.exception() 
开发者ID:tp4a,项目名称:teleport,代码行数:20,代码来源:web.py

示例6: _handle_exception

# 需要导入模块: from tornado import iostream [as 别名]
# 或者: from tornado.iostream import StreamClosedError [as 别名]
def _handle_exception(self, typ, value, tb):
        if self.final_callback:
            self._remove_timeout()
            if isinstance(value, StreamClosedError):
                if value.real_error is None:
                    value = HTTPStreamClosedError("Stream closed")
                else:
                    value = value.real_error
            self._run_callback(HTTPResponse(self.request, 599, error=value,
                                            request_time=self.io_loop.time() - self.start_time,
                                            start_time=self.start_wall_time,
                                            ))

            if hasattr(self, "stream"):
                # TODO: this may cause a StreamClosedError to be raised
                # by the connection's Future.  Should we cancel the
                # connection more gracefully?
                self.stream.close()
            return True
        else:
            # If our callback has already been called, we are probably
            # catching an exception that is not caused by us but rather
            # some child of our callback. Rather than drop it on the floor,
            # pass it along, unless it's just the stream being closed.
            return isinstance(value, StreamClosedError) 
开发者ID:tp4a,项目名称:teleport,代码行数:27,代码来源:simple_httpclient.py

示例7: test_read_until_max_bytes_inline

# 需要导入模块: from tornado import iostream [as 别名]
# 或者: from tornado.iostream import StreamClosedError [as 别名]
def test_read_until_max_bytes_inline(self):
        rs, ws = yield self.make_iostream_pair()
        closed = Event()
        rs.set_close_callback(closed.set)
        try:
            # Similar to the error case in the previous test, but the
            # ws writes first so rs reads are satisfied
            # inline.  For consistency with the out-of-line case, we
            # do not raise the error synchronously.
            ws.write(b"123456")
            with ExpectLog(gen_log, "Unsatisfiable read"):
                with self.assertRaises(StreamClosedError):
                    yield rs.read_until(b"def", max_bytes=5)
            yield closed.wait()
        finally:
            ws.close()
            rs.close() 
开发者ID:tp4a,项目名称:teleport,代码行数:19,代码来源:iostream_test.py

示例8: test_connection_refused

# 需要导入模块: from tornado import iostream [as 别名]
# 或者: from tornado.iostream import StreamClosedError [as 别名]
def test_connection_refused(self):
        # When a connection is refused, the connect callback should not
        # be run.  (The kqueue IOLoop used to behave differently from the
        # epoll IOLoop in this respect)
        cleanup_func, port = refusing_port()
        self.addCleanup(cleanup_func)
        stream = IOStream(socket.socket())

        stream.set_close_callback(self.stop)
        # log messages vary by platform and ioloop implementation
        with ExpectLog(gen_log, ".*", required=False):
            with self.assertRaises(StreamClosedError):
                yield stream.connect(("127.0.0.1", port))

        self.assertTrue(isinstance(stream.error, socket.error), stream.error)
        if sys.platform != 'cygwin':
            _ERRNO_CONNREFUSED = (errno.ECONNREFUSED,)
            if hasattr(errno, "WSAECONNREFUSED"):
                _ERRNO_CONNREFUSED += (errno.WSAECONNREFUSED,)
            # cygwin's errnos don't match those used on native windows python
            self.assertTrue(stream.error.args[0] in _ERRNO_CONNREFUSED) 
开发者ID:tp4a,项目名称:teleport,代码行数:23,代码来源:iostream_test.py

示例9: write

# 需要导入模块: from tornado import iostream [as 别名]
# 或者: from tornado.iostream import StreamClosedError [as 别名]
def write(self, chunk, callback=None):
        """Implements `.HTTPConnection.write`.

        For backwards compatibility it is allowed but deprecated to
        skip `write_headers` and instead call `write()` with a
        pre-encoded header block.
        """
        future = None
        if self.stream.closed():
            future = self._write_future = Future()
            self._write_future.set_exception(iostream.StreamClosedError())
            self._write_future.exception()
        else:
            if callback is not None:
                warnings.warn("callback argument is deprecated, use returned Future instead",
                              DeprecationWarning)
                self._write_callback = stack_context.wrap(callback)
            else:
                future = self._write_future = Future()
            self._pending_write = self.stream.write(self._format_chunk(chunk))
            self._pending_write.add_done_callback(self._on_write_complete)
        return future 
开发者ID:tp4a,项目名称:teleport,代码行数:24,代码来源:http1connection.py

示例10: write

# 需要导入模块: from tornado import iostream [as 别名]
# 或者: from tornado.iostream import StreamClosedError [as 别名]
def write(self, chunk: bytes) -> "Future[None]":
        """Implements `.HTTPConnection.write`.

        For backwards compatibility it is allowed but deprecated to
        skip `write_headers` and instead call `write()` with a
        pre-encoded header block.
        """
        future = None
        if self.stream.closed():
            future = self._write_future = Future()
            self._write_future.set_exception(iostream.StreamClosedError())
            self._write_future.exception()
        else:
            future = self._write_future = Future()
            self._pending_write = self.stream.write(self._format_chunk(chunk))
            future_add_done_callback(self._pending_write, self._on_write_complete)
        return future 
开发者ID:tp4a,项目名称:teleport,代码行数:19,代码来源:http1connection.py

示例11: on_connection_close

# 需要导入模块: from tornado import iostream [as 别名]
# 或者: from tornado.iostream import StreamClosedError [as 别名]
def on_connection_close(self):
        """在异步处理中, 如果客户端关闭了连接将会被调用.

        复写这个方法来清除与长连接相关的资源. 注意这个方法只有当在异步处理
        连接被关闭才会被调用; 如果你需要在每个请求之后做清理, 请复写
        `on_finish` 方法来代替.

        在客户端离开后, 代理可能会保持连接一段时间 (也可能是无限期),
        所以这个方法在终端用户关闭他们的连接时可能不会被立即执行.
        """
        if _has_stream_request_body(self.__class__):
            if not self.request.body.done():
                self.request.body.set_exception(iostream.StreamClosedError())
                self.request.body.exception() 
开发者ID:tao12345666333,项目名称:tornado-zh,代码行数:16,代码来源:web.py

示例12: _write_frame

# 需要导入模块: from tornado import iostream [as 别名]
# 或者: from tornado.iostream import StreamClosedError [as 别名]
def _write_frame(self, fin, opcode, data, flags=0):
        if fin:
            finbit = self.FIN
        else:
            finbit = 0
        frame = struct.pack("B", finbit | opcode | flags)
        l = len(data)
        if self.mask_outgoing:
            mask_bit = 0x80
        else:
            mask_bit = 0
        if l < 126:
            frame += struct.pack("B", l | mask_bit)
        elif l <= 0xFFFF:
            frame += struct.pack("!BH", 126 | mask_bit, l)
        else:
            frame += struct.pack("!BQ", 127 | mask_bit, l)
        if self.mask_outgoing:
            mask = os.urandom(4)
            data = mask + _websocket_mask(mask, data)
        frame += data
        self._wire_bytes_out += len(frame)
        try:
            return self.stream.write(frame)
        except StreamClosedError:
            self._abort() 
开发者ID:tao12345666333,项目名称:tornado-zh,代码行数:28,代码来源:websocket.py

示例13: _receive_frame

# 需要导入模块: from tornado import iostream [as 别名]
# 或者: from tornado.iostream import StreamClosedError [as 别名]
def _receive_frame(self):
        try:
            self.stream.read_bytes(2, self._on_frame_start)
        except StreamClosedError:
            self._abort() 
开发者ID:tao12345666333,项目名称:tornado-zh,代码行数:7,代码来源:websocket.py

示例14: _on_frame_start

# 需要导入模块: from tornado import iostream [as 别名]
# 或者: from tornado.iostream import StreamClosedError [as 别名]
def _on_frame_start(self, data):
        self._wire_bytes_in += len(data)
        header, payloadlen = struct.unpack("BB", data)
        self._final_frame = header & self.FIN
        reserved_bits = header & self.RSV_MASK
        self._frame_opcode = header & self.OPCODE_MASK
        self._frame_opcode_is_control = self._frame_opcode & 0x8
        if self._decompressor is not None and self._frame_opcode != 0:
            self._frame_compressed = bool(reserved_bits & self.RSV1)
            reserved_bits &= ~self.RSV1
        if reserved_bits:
            # client is using as-yet-undefined extensions; abort
            self._abort()
            return
        self._masked_frame = bool(payloadlen & 0x80)
        payloadlen = payloadlen & 0x7f
        if self._frame_opcode_is_control and payloadlen >= 126:
            # control frames must have payload < 126
            self._abort()
            return
        try:
            if payloadlen < 126:
                self._frame_length = payloadlen
                if self._masked_frame:
                    self.stream.read_bytes(4, self._on_masking_key)
                else:
                    self.stream.read_bytes(self._frame_length,
                                           self._on_frame_data)
            elif payloadlen == 126:
                self.stream.read_bytes(2, self._on_frame_length_16)
            elif payloadlen == 127:
                self.stream.read_bytes(8, self._on_frame_length_64)
        except StreamClosedError:
            self._abort() 
开发者ID:tao12345666333,项目名称:tornado-zh,代码行数:36,代码来源:websocket.py

示例15: _on_frame_length_64

# 需要导入模块: from tornado import iostream [as 别名]
# 或者: from tornado.iostream import StreamClosedError [as 别名]
def _on_frame_length_64(self, data):
        self._wire_bytes_in += len(data)
        self._frame_length = struct.unpack("!Q", data)[0]
        try:
            if self._masked_frame:
                self.stream.read_bytes(4, self._on_masking_key)
            else:
                self.stream.read_bytes(self._frame_length, self._on_frame_data)
        except StreamClosedError:
            self._abort() 
开发者ID:tao12345666333,项目名称:tornado-zh,代码行数:12,代码来源:websocket.py


注:本文中的tornado.iostream.StreamClosedError方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。