twistedその2

ただのproxy。

from twisted.web import http, proxy
from twisted.internet import reactor
from twisted.python import log


if __name__=="__main__":
    import sys
    log.startLogging(sys.stdout)

    f=http.HTTPFactory()
    f.protocol=proxy.Proxy

    reactor.listenTCP(10080, f)
    reactor.run()

前より簡単になってRequestを継承したクラスが消滅した。proxy.Proxy(http.HTTPChannel)がrequestFactoryとしてProxyRequestを保持しているからそのまま利用できるわけです。

+-------+
|reactor|
+-------+---------+  +-----------+  +---------+
+10080 HTTPFactory|->|HTTPChannel|->|MyRequest|
+-----------------+  +-----------+  +---------+-------------+
A                                   |process->write("Hello")|
|                                   +-----------------------+
+-------+
|browser|
+-------+

+-------+
|reactor|
+-------+---------+  +-----+  +------------+
+10080 HTTPFactory|->|Proxy|->|ProxyRequest|
+-----------------+  +-----+  +------------+---------------------+
A                                   |process-> ProxyClientFactory|
|                                   +------------------V---------++
+-------+                           |ProxyClient urlから取ってくる|
|browser|                           +-----------------------------+
+-------+

となった。たぶん