From 2e766244a7f3cda9d533da74949ce4879aac6d48 Mon Sep 17 00:00:00 2001 From: drebs Date: Sat, 27 Jan 2018 16:33:22 -0200 Subject: Add proxy studies for multiprocessing. --- blobs-multiprocess/proxies/twisted-web-protocol.py | 61 ++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100755 blobs-multiprocess/proxies/twisted-web-protocol.py (limited to 'blobs-multiprocess/proxies/twisted-web-protocol.py') 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() -- cgit v1.2.3