summaryrefslogtreecommitdiff
path: root/blobs-multiprocess/proxies/twisted-web-protocol.py
diff options
context:
space:
mode:
authordrebs <drebs@riseup.net>2018-01-27 16:33:22 -0200
committerdrebs <drebs@riseup.net>2018-01-27 16:33:22 -0200
commit2e766244a7f3cda9d533da74949ce4879aac6d48 (patch)
tree9b70cdd7c0844dbab2a9deeb7b9b7dc5e32efb10 /blobs-multiprocess/proxies/twisted-web-protocol.py
parentdffcd8a954225dedc51beae01baf0966ce92e155 (diff)
Add proxy studies for multiprocessing.HEADmaster
Diffstat (limited to 'blobs-multiprocess/proxies/twisted-web-protocol.py')
-rwxr-xr-xblobs-multiprocess/proxies/twisted-web-protocol.py61
1 files changed, 61 insertions, 0 deletions
diff --git a/blobs-multiprocess/proxies/twisted-web-protocol.py b/blobs-multiprocess/proxies/twisted-web-protocol.py
new file mode 100755
index 0000000..d8eda3e
--- /dev/null
+++ b/blobs-multiprocess/proxies/twisted-web-protocol.py
@@ -0,0 +1,61 @@
+#!/usr/bin/env python
+
+import sys
+from argparse import ArgumentParser
+from twisted.internet import reactor
+from twisted.web import proxy, http
+from twisted.python import log
+
+
+LISTEN_PORT = 8080
+SERVER_PORT = 8001
+
+
+class BlobsClientFactory(proxy.ProxyClientFactory):
+
+ host = '127.0.0.1'
+ port = SERVER_PORT
+
+
+class BlobsRequest(proxy.ReverseProxyRequest):
+
+ proxyClientFactoryClass = BlobsClientFactory
+ factory = BlobsClientFactory
+
+ def finish(self):
+ return proxy.ReverseProxyRequest.finish(self)
+
+
+class BlobsReverseProxy(proxy.ReverseProxy):
+
+ requestFactory = BlobsRequest
+
+
+def main():
+ args = parse_args()
+ if args.verbose:
+ log.startLogging(sys.stdout)
+ start_revproxy(args.listen_port)
+
+
+def start_revproxy(listen_port):
+ factory = http.HTTPFactory()
+ factory.protocol = BlobsReverseProxy
+ reactor.listenTCP(listen_port, factory)
+ reactor.run()
+
+
+def parse_args():
+ parser = ArgumentParser()
+ parser.add_argument('--verbose', '-v', action='store_true',
+ help='Output logs to stdout.')
+ parser.add_argument('--listen-port', '-p', type=int, default=LISTEN_PORT,
+ help='The port in which to listen.')
+ parser.add_argument('--server-port', '-P', type=int, default=SERVER_PORT,
+ help='The port to which connect.')
+ args = parser.parse_args()
+ return args
+
+
+if __name__ == '__main__':
+ main()