class ReverseProxy(HTTPChannel): (source)
Implements a simple reverse proxy.
For details of usage, see the file examples/reverse-proxy.py.
Inherited from HTTPChannel
:
Method | __init__ |
Undocumented |
Method | allContentReceived |
Undocumented |
Method | allHeadersReceived |
Undocumented |
Method | checkPersistence |
Check if the channel should close or not. |
Method | connectionLost |
Called when the connection is shut down. |
Method | connectionMade |
Called when a connection is made. |
Method | dataReceived |
Data was received from the network. Process it. |
Method | forceAbortClient |
No summary |
Method | getHost |
Get the local address of this connection. |
Method | getPeer |
Get the remote address of this connection. |
Method | headerReceived |
Do pre-processing (for content-length) and store this header away. Enforce the per-request header limit. |
Method | isSecure |
Return True if this channel is using a secure transport. |
Method | lineReceived |
Called for each line from request until the end of headers when it enters binary mode. |
Method | loseConnection |
Closes the connection. Will write any data that is pending to be sent on the network, but if this response has not yet been written to the network will not write anything. |
Method | pauseProducing |
Pause producing data. |
Method | rawDataReceived |
Override this for when raw data is received. |
Method | registerProducer |
Register to receive data from a producer. |
Method | requestDone |
Called by first request in queue when it is done. |
Method | resumeProducing |
Resume producing data. |
Method | stopProducing |
Stop producing data. |
Method | timeoutConnection |
Called when the connection times out. |
Method | unregisterProducer |
Stop consuming data from a producer, without disconnecting. |
Method | write |
Called by Request objects to write response data. |
Method | writeHeaders |
Called by Request objects to write a complete set of HTTP headers to a transport. |
Method | writeSequence |
Write a list of strings to the HTTP response. |
Instance Variable | abortTimeout |
The number of seconds to wait after we attempt to shut the transport down cleanly to give up and forcibly terminate it. This is only used when we time a connection out, to prevent errors causing the FD to get leaked. If this is None , we will wait forever. |
Instance Variable | length |
Undocumented |
Instance Variable | MAX_LENGTH |
Maximum length for initial request line and each line from the header. |
Instance Variable | maxHeaders |
Maximum number of headers allowed per request. |
Instance Variable | persistent |
Undocumented |
Instance Variable | requests |
Undocumented |
Instance Variable | totalHeadersSize |
Maximum bytes for request line plus all headers from the request. |
Method | _finishRequestBody |
Undocumented |
Method | _maybeChooseTransferDecoder |
If the provided header is content-length or transfer-encoding, choose the appropriate decoder if any. |
Method | _respondToBadRequestAndDisconnect |
This is a quick and dirty way of responding to bad requests. |
Method | _send100Continue |
Sends a 100 Continue response, used to signal to clients that further processing will be performed. |
Class Variable | __content |
Undocumented |
Class Variable | __header |
Undocumented |
Class Variable | _log |
Undocumented |
Instance Variable | __first_line |
Undocumented |
Instance Variable | _abortingCall |
The twisted.internet.base.DelayedCall that will be used to forcibly close the transport if it doesn't close cleanly. |
Instance Variable | _command |
Undocumented |
Instance Variable | _dataBuffer |
Any data that has been received from the connection while processing an outstanding request. |
Instance Variable | _handlingRequest |
Whether a request is currently being processed. |
Instance Variable | _networkProducer |
Either the transport, if it provides interfaces.IPushProducer , or a null implementation of interfaces.IPushProducer . Used to attempt to prevent the transport from producing excess data when we're responding to a request. |
Instance Variable | _optimisticEagerReadSize |
When a resource takes a long time to answer a request (via However, in order to simplify application logic, we implement head-of-line blocking, and do not relay pipelined requests to the application until the previous request has been answered. This means that said application cannot dispose of any entity-body that comes in from those subsequent requests, which may be arbitrarily large, and it may need to be buffered in memory. To implement this tradeoff between prompt notification when possible (in the most frequent case of non-pipelined requests) and correct behavior when not (say, if a client sends a very long-running GET request followed by a PUT request with a very large body) we will continue reading pipelined requests into self._dataBuffer up to a given limit. _optimisticEagerReadSize is the number of bytes we will accept from the client and buffer before pausing the transport. This behavior has been in place since Twisted 17.9.0 . |
Instance Variable | _path |
Undocumented |
Instance Variable | _receivedHeaderCount |
Undocumented |
Instance Variable | _receivedHeaderSize |
Bytes received so far for the header. |
Instance Variable | _requestProducer |
If the The reason we proxy through the producing methods rather than the old behaviour (where we literally just set the |
Instance Variable | _requestProducerStreaming |
A boolean that tracks whether the producer on the Request side of this channel has registered itself as a interfaces.IPushProducer or an interfaces.IPullProducer . |
Instance Variable | _savedTimeOut |
Undocumented |
Instance Variable | _transferDecoder |
None or a decoder instance if the request body uses the chunked Transfer-Encoding. |
Instance Variable | _version |
Undocumented |
Instance Variable | _waitingForTransport |
A boolean that tracks whether the transport has asked us to stop producing. This is used to keep track of what we're waiting for: if the transport has asked us to stop producing then we don't want to unpause the transport until it asks us to produce again. |
Inherited from LineReceiver
(via HTTPChannel
):
Method | clearLineBuffer |
Clear buffered data. |
Method | lineLengthExceeded |
Called when the maximum line length has been reached. Override if it needs to be dealt with in some special way. |
Method | sendLine |
Sends a line to the other end of the connection. |
Method | setLineMode |
Sets the line-mode of this receiver. |
Method | setRawMode |
Sets the raw mode of this receiver. Further data received will be sent to rawDataReceived rather than lineReceived. |
Class Variable | delimiter |
The line-ending delimiter to use. By default this is b'\r\n'. |
Instance Variable | line_mode |
Undocumented |
Instance Variable | _buffer |
Undocumented |
Instance Variable | _busyReceiving |
Undocumented |
Inherited from Protocol
(via HTTPChannel
, LineReceiver
):
Method | logPrefix |
Return a prefix matching the class name, to identify log messages related to this protocol instance. |
Class Variable | factory |
Undocumented |
Inherited from BaseProtocol
(via HTTPChannel
, LineReceiver
, Protocol
):
Method | makeConnection |
Make a connection to a transport and a server. |
Instance Variable | connected |
Undocumented |
Instance Variable | transport |
Undocumented |
Inherited from _PauseableMixin
(via HTTPChannel
, LineReceiver
):
Instance Variable | paused |
Undocumented |
Inherited from TimeoutMixin
(via HTTPChannel
):
Method | callLater |
Wrapper around reactor.callLater for test purpose. |
Method | resetTimeout |
Reset the timeout count down. |
Method | setTimeout |
Change the timeout period |
Instance Variable | timeOut |
The number of seconds after which to timeout the connection. |
Method | __timedOut |
Undocumented |
Instance Variable | __timeoutCall |
Undocumented |