Lightweight HTTP reverse proxy built on eventlet
Project description
proxylet: lightweight HTTP reverse proxy built on eventlet
This module implements a lightweight reverse proxy for HTTP, using non-blocking
IO based on the eventlet module. It aims to do as little as possible while
supporting simple request/response rewriting and being compatible with HTTP
keep-alive.
Basic operation is via the 'serve' function, which will bind to the
specified host and port and start accepting incoming HTTP requests:
proxylet.serve(host,port,mapper)
Here 'mapper' is a function taking a proxylet.streams.HTTPRequest object,
and returning either None (for '404 Not Found') or a 3-tuple giving the
destination host, destination port, and a rewriter object.
The rewriter can be any callable that takes request and response streams
as arguments and returns wrapped versions of them, but it will most likely
be a subclass of proxylet.relocate.Relocator. This class has the necessary
logic to rewrite the request for proxying.
As an example of the available functionality, this mapping function will
proxy requests to /svn to a private subversion server, requests to /files
to a private fileserver, and return 404 for any other paths:
def mapper(req):
svn = SVNRelocator("http://www.example.com/svn","http://svn.example.com/")
if svn.matchesLocal(req.reqURI):
return svn.mapping # contains the (host,port,rewriter) tuple
if req.reqURI.startswith("/files/"):
return ("files.example.com",80,None)
return None
This module implements a lightweight reverse proxy for HTTP, using non-blocking
IO based on the eventlet module. It aims to do as little as possible while
supporting simple request/response rewriting and being compatible with HTTP
keep-alive.
Basic operation is via the 'serve' function, which will bind to the
specified host and port and start accepting incoming HTTP requests:
proxylet.serve(host,port,mapper)
Here 'mapper' is a function taking a proxylet.streams.HTTPRequest object,
and returning either None (for '404 Not Found') or a 3-tuple giving the
destination host, destination port, and a rewriter object.
The rewriter can be any callable that takes request and response streams
as arguments and returns wrapped versions of them, but it will most likely
be a subclass of proxylet.relocate.Relocator. This class has the necessary
logic to rewrite the request for proxying.
As an example of the available functionality, this mapping function will
proxy requests to /svn to a private subversion server, requests to /files
to a private fileserver, and return 404 for any other paths:
def mapper(req):
svn = SVNRelocator("http://www.example.com/svn","http://svn.example.com/")
if svn.matchesLocal(req.reqURI):
return svn.mapping # contains the (host,port,rewriter) tuple
if req.reqURI.startswith("/files/"):
return ("files.example.com",80,None)
return None
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
proxylet-0.1.1.tar.gz
(8.8 kB
view details)
Built Distribution
proxylet-0.1.1-py2.5.egg
(23.2 kB
view details)
File details
Details for the file proxylet-0.1.1.tar.gz
.
File metadata
- Download URL: proxylet-0.1.1.tar.gz
- Upload date:
- Size: 8.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 717b3e6bc2f09a9cdae113adcc12856b98adb2af70164bf702d646a14aa4fd65 |
|
MD5 | 76c3922546be56e3f1e868db24c93ee7 |
|
BLAKE2b-256 | e280d5fca9bcc5b097917d2c241c5da3b1ad31586086ec254aabc6e8ff8fa485 |
File details
Details for the file proxylet-0.1.1-py2.5.egg
.
File metadata
- Download URL: proxylet-0.1.1-py2.5.egg
- Upload date:
- Size: 23.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1162d15d3479c8ae8b10f52581a3919781839975d34a89afdd0067b062357218 |
|
MD5 | c6e350768c26978c1137eaaf53b7329b |
|
BLAKE2b-256 | 60ba21d1d3ff6894d0514f8f126599030684796b2e14e5a8d55a3d08e1c73b99 |