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
Release files for proxylet 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| proxylet-0.1.1.tar.gz | 8.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| proxylet-0.1.1-py2.5.egg | Legacy Egg format | - | - | Details |
Total release size: 32.0 kB
Release files / proxylet-0.1.1.tar.gz
| Download URL | proxylet-0.1.1.tar.gz |
|---|---|
| Size | 8.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
717b3e6bc2f09a9cdae113adcc12856b98adb2af70164bf702d646a14aa4fd65
|
|
BLAKE2b-256 checksum How to use checksums |
e280d5fca9bcc5b097917d2c241c5da3b1ad31586086ec254aabc6e8ff8fa485
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Release files / proxylet-0.1.1-py2.5.egg
| Download URL | proxylet-0.1.1-py2.5.egg |
|---|---|
| Size | 23.2 kB |
| Tags | Egg |
|
SHA-256 checksum How to use checksums |
1162d15d3479c8ae8b10f52581a3919781839975d34a89afdd0067b062357218
|
|
BLAKE2b-256 checksum How to use checksums |
60ba21d1d3ff6894d0514f8f126599030684796b2e14e5a8d55a3d08e1c73b99
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |